dp--01背包问题
题意:
- 有n个物品,第ni个物品的重量为wi,第ni物品的价值为vi。从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值
限制条件:
1 <= n <= 100;
1<=wi , vi<=100;
1 <= W <= 10000
输入:
n=4
(w,v) = {
(2,3),(1,2),(3,4),(2,2) }
W=5
输出:
7(选择第 0、1、3号物品)
递归代码1:
#include"bits/stdc++.h"
using namespace std;
const int MAX_N=105;
int w[MAX_N],v[MAX_N];
int n,W;
//第i个物品开始挑选总重小于j的部分
int rec(int i,int j){
int res;//定义价值这个变量res
if(i==n) res=0;//没有剩余物品时
else if(j<w[i]) res=rec(i+1,j);//当背包能装的质量小于单个物体w[i] 的质量时,比较第[i+1]个 物体
else res=max(rec(i+1