328K |
16MS |
GCC |
566B |
2009-01-12 12:55:30 |
设置一个best数组,两个用处:
1)存放输入数据
2)best[i][j]表示前i束花放到前j个花瓶中能得到的最大的审美价值。
那么:best[i][j]=max(best[i-1][k]) 1=<k<=j-1
代码如下:
Code
#include<stdio.h>
int f,v,best[102][102];
void input()
{
int i,j;
scanf("%d %d",&f,&v);
for(i=1;i<=f;i++)
for(j=1;j<=v;j++)
scanf("%d",&best[i][j]);
}
void process()
{
int i,j,max,k;
for(i=2;i<=f;i++)
for(j=1;j<=v;j++)
{
if(j<i) best[i][j]=-1000;
else{
max=-9999999;
for(k=j-1;k>0;k--)
if(best[i-1][k]>max)
max=best[i-1][k];
best[i][j]+=max;
}
}
i=f;max=-9999999;
for(j=f;j<=v;j++)
if(best[i][j]>max)
max=best[i][j];
printf("%d\n",max);
}
int main()
{
input();
process();
}