动态规划的用法——01背包问题
问题主题:著名的01背包问题
问题描述:
有n个重量和价值分别为wi、vi的物品,现在要从这些物品中选出总重量不超过W的物品,求所有挑选方案中的价值最大值。
限制条件:
1<=N<=100
1<=wi、vi<=100
1<=wi<=10000
样例:
输入
N=4
W[N] = {2, 1, 3, 2}
V[N] = {3, 2, 4, 2}
输出
W = 5(选择0,1,3号)
【解法一】
解题分析:
用普通的递归方法,对每个物品是否放入背包进行搜索
程序实现:
C++
#include
#include
#include
#include "iostream"
using namespace std;
const int N = 4;
const int W = 5;
int weight[N] = {2, 1, 3, 2};
int value[N] = {3, 2, 4, 2};
int solve(int i, int residue)
{
int result = 0;
if(i >= N)
return resu