AC_9. 分组背包问题
Posted gcter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AC_9. 分组背包问题相关的知识,希望对你有一定的参考价值。
代码:
//9. 分组背包问题 //多重背包问题是分组背包问题的一个特殊情况 /* 每个组的物品有s+1种选择 for(int i = 0;i<n;i++) for(int j = m;j>=v;j--) dp[j] = maxdp[j],dp[j-v[0]]+w[0],dp[j-v[i]]+w[i],.....,dp[j - v[s-1]] + w[s-1]; dp[m] */ #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N = 110; int n, m; int dp[N], v[N], w[N]; int main() cin >> n >> m; for (int i = 0; i < n; i++) int s; cin >> s; for (int j = 0; j < s; j++) cin >> v[j] >> w[j]; for (int j = m; j >= 0; j--) for (int k = 0; k < s; k++) if (j>=v[k]) dp[j] = max(dp[j], dp[j - v[k]] + w[k]); cout << dp[m] << endl; return 0;
以上是关于AC_9. 分组背包问题的主要内容,如果未能解决你的问题,请参考以下文章