#include <stdio.h>
int N;
int data[26][26];
int look(int vpos, int hpos)
{
int sum = 0;
if(data[vpos][hpos] == 1)
{
sum++;
data[vpos][hpos] = 0;
if(hpos<N)
sum += look(vpos, hpos+1);
if(vpos<N)
sum += look(vpos +1, hpos);
if(hpos>1)
sum += look(vpos, hpos-1);
if(vpos>1)
sum += look(vpos -1, hpos);
}
return sum;
}
int main(void)
{
int test_case;
int T;
int temp;
setbuf(stdout, NULL);
scanf("%d", &T);
for(test_case = 0; test_case < T; test_case++)
{
int i,j;
int S,C;
scanf("%d", &N);
for(i=1; i<=N; i++)
{
for(j=1; j<=N; j++)
{
scanf("%d", &data[i][j]);
}
}
S = 0;
C = 0;
for(i=1; i<=N; i++)
{
for(j=1; j<=N; j++)
{
//scanf("%d", &data[i][j]);
temp=look(i,j);
if (temp > 0)
S++;
if(temp > C)
C = temp;
}
}
printf("%d %d\n", S, C);
}
return 0;//Your program should return 0 on normal termination.
}
递归
最新推荐文章于 2025-05-13 14:42:58 发布
本文介绍了一个基于二维矩阵的搜索算法实现,通过递归的方式遍历矩阵中的元素,并统计连通的1的数量。该算法适用于处理二维空间内的连通区域问题。
1479

被折叠的 条评论
为什么被折叠?



