有n个重量和价值分别为wi, vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值的最大值
ps:递归版01揹包是揹包问题中最初级的解法、01揹包从这里入手!
#include <bits/stdc++.h>
using namespace std;
int N, W;
int w[100], v[100];
int rec(int i, int j)
{
int res;
if (i == N)res = 0;
else if (j >= w[i]){
res = max(v[i] + rec(i + 1, j - w[i]), rec(i + 1, j));
}else res = rec(i + 1, j);
return res;
}
int main()
{
//输入个数及重量
cin >> N >> W;
for (int i = 0; i < N; ++i){
cin >> w[i] >> v[i];
}
cout << rec(0, W) << endl;
return 0;
}