题目描述
上面矩阵的中的1代表海岸线,0代表小岛。求小岛面积(即被1中包围的0的个数)的最大值。
输入
第一行输入一个整数N(1<=N<=100),表示输入方阵的维数
输入一个N维方阵
输出
小岛面积
样例输入
6
1 1 1 1 1 1
1 1 0 0 0 1
1 0 0 0 1 0
1 1 0 1 1 1
0 1 0 1 0 0
1 1 1 1 1 1
样例输出
8
参考代码
#include<stdio.h>
int N;
int count=0;
int main()
{
void dsr(int x,int y,int c[N][N]);
scanf("%d",&N);
int a[N][N];
int d[N][N];
int i,j;
for (i=0;i<N;i++)
for (j=0;j<N;j++)
scanf("%d",&a[i][j]);
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{
dsr(i,j,a);
d[i][j]=count;
count=0;
}
int max=0;
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{
if(max<d[i][j])
max=d[i][j];
}
printf("%d",max);
}
void dsr(int x,int y,int c[N][N])
{
if(x>N || y>N || x<0 || y<0 || c[x][y]!=0)
return ;
if(c[x][y]==0)
{
count++;
c[x][y]++;
dsr(x+1,y,c);
dsr(x-1,y,c);
dsr(x,y+1,c);
dsr(x,y-1,c);
}
return ;
}
解析
暂无