dp 问题,不过要注意开始的时候下表要考虑好,我是让d[][] 的四周空出一行,这样就不会出错了
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
int N, M;
int map[25][25], d[25][25];
int dp(int N, int M)
{
memset(d, 0, sizeof(d));
for(int i=0; i<=N; i++)
for(int j=0; j<=M; j++)
if(d[i+1][j]>d[i][j+1])
d[i+1][j+1] = d[i+1][j] + map[i+1][j+1];
else d[i+1][j+1] = d[i][j+1] + map[i+1][j+1];
return d[N][M];
}
int main()
{
scanf("%d %d",&N, &M);
for(int i=1; i<=N; i++)
for(int j=1; j<=M; j++)
cin>>map[i][j];
int t = dp(N,M);
printf("%d\n",t);
system("pause");
return 0;
}