注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
来自hihocoder经典的背包问题 https://hihocoder.com/problemset/problem/1038
我看了下别人的思路,自己尝试着写了下,但一直是wrong answer, 本地测试的case都过了,求助!!
- #include <iostream>
- #include <vector>
- using namespace std;
- int backpack(vector<int>& w, vector<int>& v, int c)
- {
- vector<vector<int>> dp(w.size()+1, vector<int>(c+1,0));
- for(int i=0;i<=c;i++)
- dp[0][i] = 0;
- for(int idx=0;idx<=w.size();idx++)
- dp[idx][0] = 0;
- for(int idx=1;idx<=w.size();idx++)
- {
- for(int j=1;j<=c;j++)
- {
- dp[idx][j] = dp[idx-1][j];
- if(j-w[idx-1] >= 0)
- dp[idx][j] = max(dp[idx][j], v[idx-1] + dp[idx-1][j-w[idx-1]]);
- }
- }
- return dp[w.size()][c];
- }
- int main()
- {
- int i,c;
- cin >> i >>c;
- vector<int> w(i,0),v(i,0);
- for(int j=0;j<i;j++)
- {
- cin >> w[j] >> v[j];
- }
- cout << backpack(w,v,c) << endl;
- }
复制代码
|