C++ 代码分析:检查岛屿数量
#include<bits/stdc++.h> using namespace std; int m, n, cnt = 0, maxc = -1; char Map[128][128] = {};
void dfs(int x, int y); int main(){ scanf("%d %d", &m, &n);
for(int i = 0; i < m; ++i)
for(int j = 0; j < n; ++j)
cin >> Map[i][j];
for(int i = 0; i < m; ++i){
for(int j = 0; j < n; ++j){
if(Map[i][j] == '1'){
cnt = 0;
dfs(i, j);
maxc = max(cnt, maxc);
}
}
}
cout << maxc;
return 0;
}
void dfs(int x, int y){ ++cnt; Map[x][y] = '!'; if(x-1 >= 0 && Map[x-1][y] == '1') dfs(x-1, y); if(x+1 < m && Map[x+1][y] == '1') dfs(x+1, y); if(y-1 >= 0 && Map[x][y-1] == '1') dfs(x, y-1); if(y+1 < n && Map[x][y+1] == '1') dfs(x, y+1); } 此代码没有问题。
原文地址: https://www.cveoy.top/t/topic/oXKo 著作权归作者所有。请勿转载和采集!