64,282
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include <stdlib.h>
int main()
{
int n,m;
int *data;
while(scanf("%d %d",&n,&m)!=EOF)
{
int k=0, ans=0;
data = (int *)malloc(n * m * sizeof(int));
if (!data)
exit(0);
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
scanf("%d", &data[k++]);
for(int i=0;i<n*m;i++)
{
int x=i-m,y=i+m,z=i+1,q=i-1;
if(i%m==m-2)
z=i;
if(i%m==0)
q=i;
if(x<0||x>=n*m)
x=i;
if(y<0||y>=n*m)
y=i;
if(z<0||z>=n*m)
z=i;
if(q<0||q>=n*m)
q=i;
if(data[x]==0 && data[y]==0&&data[z]==0&&data[q]==0&&data[i]==0)
ans++;
}
printf("%d\n",ans);
free(data);
}
return 0;
}
参考一下吧
全局变量data申请的空间过大了,建议通过malloc动态申请,根据输入的m, n值来确定要申请多大的空间。