01背包问题是最经典的动态规划类问题。
已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]。
限制:每种物品只有一件,可以选择放或者不放
问题:在不超过背包容量的情况下,最多能获得多少价值或收益
//01背包问题递归求法
#include <iostream>
using namespace std;
int c[100];
int v[100];
int x[100];
//int w=20;
int packRecursion(int i,int m,int n)
{
if(i>n-1||m<0)
{
return 0;
}
int putIn=packRecursion(i+1,m-c[i],n)+v[i];
int putOut=packRecursion(i+1,m,n);
if(c[i]<=m&&putIn>putOut)
{
return putIn;
}
else
{
return putOut;
}
}
void