01背包
int main()
{
//01背包,time==》V 分数等于价值,时间等于体积
int size; cin >> size;
vector<int> w; w.resize(size + 1, 0);
vector<int> v; v.resize(size + 1, 0);
vector<int> dp;
for (int i = 1; i <= size; i++)
{
int temp; cin >> temp;
v[i] = temp;
}
for (int i = 1; i <= size; i++)
{
int temp; cin >> temp;
w[i] = temp;
}
int weight = 10; //cin >> weight;
dp.resize(weight + 1, 0);
for (int i = 1; i <= size; i++)
{
for (int j = weight; j >= w[i]; j--)
{
dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
}
}
cout << dp[weight];
}
完全背包
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int total_weight = 10;
int w[6] = { 0,5,4,3,2,1};
int v[6] = { 0,1,2,3,4,5};
int dp[11] = { 0 };
for (int i = 1; i <= 5; i++)//i<size,j<V
for (int j = w[i]; j <= 10;j++)
dp[j] = max(dp[j],dp[j - w[i]] + v[i]);
cout << "总的价值为: " << dp[10] << endl;
return 0;
}