原题:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1283
类型:dp
时间:2014.3.18
源码:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int a[m+1][n+1],f[m+1][n+1];
memset(f,0,sizeof(f));
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
f[1][1]=a[1][1];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int max=0;
for(int k=j;k>=1;k--) { if(f[j-k][i-1]+a[k][i]>max) { max=f[j-k][i-1]+a[k][i]; } }
f[j][i]=max;
}
}
printf("%d",f[m][n]);
system("pause");
return 0;
}
最后状态:AC