有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;
}