我的C代码是这样的:
#include <stdio.h>
int main() {
char c;
int n,m;
char d;
int field=1;
scanf("%d",&n);
scanf("%c",&d);//reading space
scanf("%d",&m);
while(1){
int arr[n][m];
if(n==0 || m==0)
break;
int i,j;
scanf("%c",&d); //reading a return(\n)
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%c",&c);
if(c=='*'){
arr[i][j]=-1;
}
else{
arr[i][j]=0;
}
}
scanf("%c",&d); //reading a return(\n)
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(arr[i][j]==-1){
if(0<=i-1 && arr[i-1][j]!=-1){
arr[i-1][j]++;
}
if(0<=j-1 && arr[i][j-1]!=-1){
arr[i][j-1]++;
}
if(i+1<n && arr[i+1][j]!=-1 ){
arr [i+1][j]++;
}
if(j+1<m && arr[i][j+1]!=-1){
arr [i][j+1]++;
}
if(j+1<m && i-1>=0 && arr[i-1][j+1]!=-1){
arr[i-1][j+1]++;
}
if(j+1<m && i+1<n && arr[i+1][j+1]!=-1){
arr[i+1][j+1]++;
}
if(0<=j-1 && 0<=i-1 && arr[i-1][j-1]!=-1){
arr[i-1][j-1]++;
}
if(0<=j-1 && i+1<=n && arr[i+1][j-1]!=-1){
arr[i+1][j-1]++;
}
}
}
}
printf("Field #%d:\n",field++);
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(arr[i][j]==-1)
printf("*");
else
printf("%d",arr[i][j]);
}
printf("\n");
}
scanf("%d",&n);
scanf("%c",&d);//reading a space
scanf("%d",&m);
if(n==0 || m==0)
break;
printf("\n");
}
return 0;
}
我在UVA
上收到运行时错误,在codechef
上收到了错误的答案。这是什么错误?
答案 0 :(得分:0)
你这里有一个错字:
if(0<=j-1 && i+1<=n && arr[i+1][j-1]!=-1){
i+1<=n
应该i+1<n
,就像你对其他条件一样。