DP之七

//poj 1157 LITTLE SHOP OF FLOWERS

#include
<iostream>
using namespace std;
int ans[105][105],d[105][105];
const int least=INT_MIN;
int dp(int i,int j)
{
if(d[i][j]!=least)
return d[i][j];
int m=least;
for(int k=i;k<=j;++k)
{
if(dp(i-1,k-1)+ans[i][k]>m)
m
=dp(i-1,k-1)+ans[i][k];
}
d[i][j]
=m;
return d[i][j];
}
int main()
{
int f,v;
cin
>>f>>v;
for(int j=0;j<=v;++j)
d[
0][j]=0;
for(int i=1;i<=f;++i)
for(int j=1;j<=v;++j)
{
cin
>>ans[i][j];
d[i][j]
=least;
}
cout
<<dp(f,v)<<endl;
return 0;
}
//设d[i,j]为前i束花插在前j个花瓶中的最大美学值,
//有状态转移方程:dp[i,j]=max(d[i-1,k-1]+A[i,k]),其中i<=k<=j,
//A[i,k]为第i束花插在第k个花瓶中的美学值,规定d[0,j]=0,0<=j<=v。

  

posted on 2011-08-22 12:13  sysu_mjc  阅读(115)  评论(0编辑  收藏  举报

导航