DEV可以编译为什么OJ显示编译错误


#include<bits/stdc++.h>
using namespace std;

#define MAXN 10000
int m,n,i,j;
int N[MAXN][MAXN]={0};
int M[MAXN][MAXN]={0};

int main(){
    while(cin>>m != 0){
    cin>>n;
    for(i=1;i<=m;i++){
        for(i=1;i<=n;i++)
        cin>>N[m][n];
    }
    M[1][1]=N[1][1];
    for(i=1;i<=m;i++){
        for(j=1;j<=n;j++){
            if(i==1&&j!=1) M[i][j]=M[i][j-1]+N[i][j];
            else if(i!=1&&j==1) M[i][j]=M[i-1][j]+N[i][j];    
            else if(i==1&&j==1) continue ;
            else M[i][j]=max(M[i-1][j]+N[i][j],M[i][j-1]+N[i][j]);
        }
    }
    cout<<M[m][n];
    }
    return 0;
}

试试修改后的代码:

#include<bits/stdc++.h>
using namespace std;

#define MAXN 10000
int m,n,i,j;
int N[MAXN][MAXN]={0};
int M[MAXN][MAXN]={0};

int main(){
    while(cin>>m != 0){
        cin>>n;
        for(i=1;i<=m;i++){
            for(j=1;j<=n;j++)
                cin>>N[i][j];
        }
        M[1][1]=N[1][1];
        for(i=1;i<=m;i++){
            for(j=1;j<=n;j++){
                if(i==1&&j!=1) M[i][j]=M[i][j-1]+N[i][j];
                else if(i!=1&&j==1) M[i][j]=M[i-1][j]+N[i][j];    
                else if(i==1&&j==1) continue;
                else M[i][j]=max(M[i-1][j]+N[i][j],M[i][j-1]+N[i][j]);
            }
        }
        cout<<M[m][n]<<endl;
    }
    return 0;
}

```