#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[105][105];
int a[105][105];
int main()
{
int n,m;
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
memset(f,0,sizeof(f));
for(int i=1;i<=m;i++) //前i束花插进前j个瓶子,不管值是否为负,都要插进去
f[i][i]=f[i-1][i-1]+a[i][i];
for(int i=1;i<=m;i++)
for(int j=i+1;j<=n;j++)
{
f[i][j]=max(f[i][j-1],f[i-1][j-1]+a[i][j]);
}
cout<<f[m][n]<<endl;
return 0;
}
//f[i][j]表示前i束花插入前j个花瓶得到的最大值
poj1157(简单dp)
最新推荐文章于 2017-05-17 22:55:10 发布