我的每日一题啊 虽然重了 但还是传上来吧
这道题不同于poj上的lake counting,它是4个方向的,总得来说还是比较简单的
#include <iostream>
#include<cstring>
using namespace std;
int m, n;
int cnt;
int map[100][100];
const int dx[4] = {0, 0, -1, 1};
const int dy[4] = {1, -1, 0, 0};
void dfs(int x, int y)
{
int xx, yy;
map[x][y] = 0;
for(int i=0; i<4; i++)
{
xx = x + dx[i];
yy = y + dy[i];
if(xx>=0 && xx<m && yy>=0 && yy<n && map[xx][yy] == 1)
{
dfs(xx, yy);
}
}
}
int main()
{
int T;
cin >> T;
while(T--)
{
cnt = 0;
cin >> 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++;
dfs(i, j);
map[i][j] = 0;
}
}
}
cout << cnt << endl;
}
return 0;
}