uva 10130 超级市场

来源:互联网 发布:网络行业创业 编辑:程序博客网 时间:2024/05/16 13:42

商品无限,01的背包问题,有多个人,分成不同的人求和,之间没有关联

j是从0---V还是从V----0

这个是0-1背包和无限背包问题的关键不同所在

#include <iostream>#include <vector>#include <map>#include <list>#include <set>#include <deque>#include <stack>#include <queue>#include <algorithm>#include <cmath>#include <cctype>#include <cstdio>#include <iomanip>#include <cmath>#include <cstdio>#include <iostream>#include <string>#include <sstream>#include <cstring>#include <queue>using namespace std;///宏定义const int INF = 20000000;const int maxn = 1050;const double PI = acos(-1.0);///全局变量 和 函数//int T;int f[maxn];int n;int price[maxn];int weight[maxn];int persons;int ans;int main(){//////////////////////////////////////////////////////////////////////////int i, j, k;cin >> T;while (T--){cin >> n;for (i = 1; i <= n; i++){cin >> price[i] >> weight[i];}cin >> persons;ans = 0;for (i = 1; i <= persons; i++){int v;cin >> v;memset(f, 0, sizeof(f));//k种物品for (k = 1; k <= n; k++){for (j = v; j >= 0; j--){if (j >= weight[k]){f[j] = max(f[j], f[j - weight[k]] + price[k]);}}}ans += f[v];}cout << ans << endl;}return 0;}


 

原创粉丝点击