Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số đảo nhị phân bằng DFS C++

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

  1. Khởi tạo mảng visited.
  2. Duyệt mọi ô: nếu =1 và chưa visited → DFS đánh dấu toàn bộ đảo, tăng đếm.
  3. 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