1:完全背包问题
说明:代码包含完全背包问题的 计算方法和回溯代码。针对的问题如下:
猴子代行镇山之令后愈发聪明能干,经常寻找水果与其小伙伴们分享。一日,猴子又到果林中摘果子,果林中有香蕉、桃子、葡萄、苹果还有西瓜等,一番尽情享受之后,这次它开动脑筋,决定用身上的背袋尽量多带走价值高的一些水果与其小伙伴们分享。假设香蕉、桃子、西瓜、苹果以及葡萄5种水果的重量分别为w1,w2,w3,w4,w5(忽略单位,后同),其对应的价值分别为v1,v2,v3,v4,v5(忽略单位)。猴子A随身所带背包的最大载重量为m。
简化上面问题:
5个物品,个数不限。 数组显示如下。V是体积,W是质量 v[6] = {0,3,2,5,1,6}; w[6] = {0,6,5,10,2,16};
最后结果是: 26:物品5是1个。物品4是4个。 (10=6+1X4。 26=16+2X4)
简化问题的运行结果截图:
#include<iostream>
using namespace std;
const int N = 1010;
int f[N][N];//结果
int v[N],w[N];//v是体积或者重量,w是价值。
int fk[N][N];//回溯路径
int main()
{
int n = 5, m