您的位置:首页 > 运维架构

poj 1157 LITTLE SHOP OF FLOWERS DP 背包问题变形

2011-08-27 11:25 288 查看
dp[i][j] 表示前i个花瓶装j朵花,类似于体积刚好为V的01背包问题

在本题中花瓶可以选择使用或者不使用,类似于背包问题中的物品,背包问题中的体积即为本题的花瓶数

总体积为v,有f个物品,每一个体积为1,价值为value[f][v]
由于是刚好装满背包,所以初始化dp[][0] = 0;其它初始化为极小值

#include<iostream>
using namespace std;
int max(int a,int b)
{
return a > b ? a : b;
}
int main()
{
int dp[105][105],f,v,i,j,value[105][105];
scanf("%d%d",&f,&v);
for(i = 1;i <= f;i++)
for(j = 1;j <= v;j++)
scanf("%d",&value[i][j]);
for(i = 0;i <= f;i++)
for(j = 1;j <= v;j++)
dp[i][j] = -1000;
for(i = 0;i <= v;i++)
dp[i][0] = 0;
for(i = 1;i <= v;i++)
for(j = 1;j <= f;j++)
dp[i][j] = max(dp[i-1][j],dp[i-1][j-1] + value[j][i]);
printf("%d\n",dp[v][f]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: