PKU 1157 LITTLE SHOP OF FLOWERS
2010-07-30 15:56
309 查看
动态规划的题目,找到最合适的插花位置,首先这是一个分段决策问题,我一开始做的思路是,通过一个遍历插第i朵花的时候,在第j个花瓶中遍历的去找,只要超过v-(f-i-1)就行,但是现在想一想,我知道自己错在哪里了,我所想的思路是一个不可逆的过程,也许当前最优的选择不一定是最后最优的选择。
改正思路,对于dp[i][j]来说,状态转移方程应该是dp[i][j]=max(dp[i-1][k])+value[i][j];也就是在将第i只花插入第j只花瓶。前i-1只花是最大值max(dp[i-1][k])是对于i-1只花寻找其美观值最大的花瓶位置。当i等于最后一只花时,前面的花都已经安排好。通过遍历找到最后一只的最大值dp[i][j]最大那个就是答案!
代码如下:
改正思路,对于dp[i][j]来说,状态转移方程应该是dp[i][j]=max(dp[i-1][k])+value[i][j];也就是在将第i只花插入第j只花瓶。前i-1只花是最大值max(dp[i-1][k])是对于i-1只花寻找其美观值最大的花瓶位置。当i等于最后一只花时,前面的花都已经安排好。通过遍历找到最后一只的最大值dp[i][j]最大那个就是答案!
代码如下:
]#include <iostream> #define maxn 105 using namespace std; int main() { int value[maxn][maxn]; int f,v; int i,j; int dp[maxn][maxn]; while(cin>>f>>v) { for(i=0;i<f;i++) { for(j=0;j<v;j++) { //cout<<i<<j<<endl; scanf("%d",&value[i][j]); } } memset(dp,0,sizeof(dp)); for(i=0;i<v;i++) { dp[0][i]=value[0][i]; } /*for(i=0;i<v;i++) { cout<<dp[0][i]<<endl; }*/ int max=-50000000; for(i=1;i<f;i++) { for(j=i;j<v;j++) { max=-5000000; for(int k=i-1;k<j;k++) { //cout<<dp[i-1][k]<<" "<<i<<j<<k<<endl; if(max<dp[i-1][k]) { //cout<<dp[i-1][k]<<"//(-o-)/"<<value[i][j]<<endl; max=dp[i-1][k]; } } dp[i][j]=max+value[i][j]; } } int ans=-50000000; for(i=f-1;i<v;i++) { if(ans<dp[f-1][i]) ans=dp[f-1][i]; } cout<<ans<<endl; } return 0; }
相关文章推荐
- PKU1157 little shop of flowers
- pku1157 LITTLE SHOP OF FLOWERS
- pku1157-------LITTLE SHOP OF FLOWERS(简单动态规划题:摆放鲜花使审美价值达到最高)
- pku 1157 LITTLE SHOP OF FLOWERS 水货dp 解题报告
- POJ 1157 LITTLE SHOP OF FLOWERS 笔记
- POJ 1157 LITTLE SHOP OF FLOWERS
- poj1157 LITTLE SHOP OF FLOWERS(dp)
- POJ 1157 LITTLE SHOP OF FLOWERS
- POJ 1157 LITTLE SHOP OF FLOWERS【基础DP】
- poj 1157 LITTLE SHOP OF FLOWERS
- POJ-1157 LITTLE SHOP OF FLOWERS(动态规划)
- POJ 1157-LITTLE SHOP OF FLOWERS
- POJ-1157-LITTLE SHOP OF FLOWERS
- 【DP】POJ-1157 LITTLE SHOP OF FLOWERS
- POJ - 1157 LITTLE SHOP OF FLOWERS
- POJ 1157 LITTLE SHOP OF FLOWERS
- POJ 1157 LITTLE SHOP OF FLOWERS
- poj 1157 LITTLE SHOP OF FLOWERS
- POJ 1157 LITTLE SHOP OF FLOWERS (DP)
- POJ 1157 LITTLE SHOP OF FLOWERS ( DP )