#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;
}
算法编程竞赛的一些经验和教训
算法编程学习过程中的技巧积累
算法编程学习过程中的踩坑记录
手把手撕LeetCode题目,扒各种算法套路的裤子
试试修改后的代码:
#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;
}
```