UVA判断运行时错误和同一问题上的codechef错误答案

时间:2015-06-12 09:40:04

标签: c runtime-error

以下是codechefUVa online Judge

上问题的链接

我的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上收到了错误的答案。这是什么错误?

1 个答案:

答案 0 :(得分:0)

你这里有一个错字:

if(0<=j-1 && i+1<=n && arr[i+1][j-1]!=-1){

i+1<=n应该i+1<n,就像你对其他条件一样。