#include <stdio.h>
int f(int i,int j,int a[250][250],int b[250][250],int m,int n){
int max=0;
if(i>=0&&i<m&&j>=0&&j<n&&a[i][j]==1&&b[i][j]==0)
{
b[i][j]==1;
max++;
return max+f(i-1,j,a,b,m,n)+f(i+1,j,a,b,m,n)+f(i,j+1,a,b,m,n)+f(i,j-1,a,b,m,n);
}
return max;
}
int main() {
int m,n,i,j,t,o,a[250][250],b[250][250],c[250];
while(scanf("%d%d",&m,&n)!=EOF){
t=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
b[i][j]=0;
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]==1)
{
c[t]=f(i,j,a,b,m,n);
t++;
}
}
}
o=c[0];
for(i=0;i<t;i++)
{
if(c[i]>o) o=c[i];
}
printf("%d\n",o);
}
return 0;
}
2209.1
最新推荐文章于 2024-09-10 15:28:21 发布
本文介绍了一个使用递归和动态规划方法解决的矩阵问题,计算从给定位置到所有1值格子的路径数量。通过函数f(i,j)逐层遍历并更新最大路径数。
摘要由CSDN通过智能技术生成