Mô tả bài toán
Cho ma trận nhị phân 2D. Đảo là nhóm 1 liên thông 8 hướng. Đếm số đảo bằng DFS.
Ví dụ
mat = {{1,0,0,0},{0,1,0,1},{0,0,0,0},{0,0,1,0}} → Output: 3 (nhưng code mẫu cho 4 do ma trận 5x5 khác).
Giải thuật DFS
- Khởi tạo mảng visited.
- Duyệt mọi ô: nếu =1 và chưa visited → DFS đánh dấu toàn bộ đảo, tăng đếm.
- DFS đệ quy thăm 8 hàng xóm.
Mã nguồn C++
#include <bits/stdc++.h>
using namespace std;
#define ROW 5
#define COL 5
bool canVisit(int bin[][COL], int r, int c, bool vis[][COL]) {
return r>=0 && r=0 && c
Đầu ra
The number of islands present in the matrix is 4