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

来源:互联网 发布:制作请帖的软件 编辑:程序博客网 时间:2024/05/14 10:24

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;}