应该是最简单的搜索题了,四个方向一搜直接过。
#include<stdio.h>
#include<string.h>
int s, t, a[101][101];
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
void dfs(int x, int y)
{
a[x][y] = 0;
for(int k = 0; k < 4; k++)
{
s = x + dx[k];
t = y + dy[k];
if(a[s][t])
dfs(s,t);
}
}
int main()
{
int T, n, m, i, j, count;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
count = 0;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= m;j++)
{
if(a[i][j])
{
dfs(i,j);
count++;
}
}
}
printf("%d\n",count);
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-969543.html