#include<iostream> #include<cstring> using namespace std; int max(int a,int b){ if(a>b) return a; else return b; } int main(){ int n;//组数 int b[101][101];//花生地中的花生数 //初始化花生地 memset(b,0,sizeof(b)); int x,y;//花生地的行列 cin>>x>>y;//读入花生地的行列 //读入每块地种多少花生 //这里i和j从1开始,为的是下面判断i-1,j-1的时候边界值省得特殊处理 for(int i=1;i<=x;i++){ for(int j=1;j<=y;j++){ cin>>b[i][j]; } } //第推找最大值 for(int i=1;i<=x;i++){ for(int j=1;j<=y;j++){ //从上面过来划算,还是从左边过来划算 b[i][j]+=max(b[i-1][j],b[i][j-1]); } } cout<<b[x][y]; } /************************************************************** Problem: 1298 User: admin Language: C++ Result: Accepted Time:8 ms Memory:2072 kb ****************************************************************/