#include<iostream>
using namespace std;
int maxv=0,cap=12,n=6;
//cap:背包容量 n:商品数量 maxv:总计价值
int w[]={0,5,7,5,4,6,2};//商品质量
int v[]={0,7,7,8,2,10,3};//商品价值
int f[15];
void dfs(int i,int cv,int cw)
{
if(i>n)
{
if(cv>maxv)
maxv=cv;
}
else
{
for(int j=0;j<=1;j++)
{
if(cw+w[i]*j<cap)
{
cw+=w[i]*j;
cv+=v[i]*j;
dfs(i+1,cv,cw);
cw-=w[i]*j;
cv-=v[i]*j;
}
}
}
}
int main()
{
dfs(1,0,0);
cout<<"最优价值为:"<<maxv;
}
本文介绍了一个使用深度优先搜索算法解决背包问题的C++程序。通过递归的方式,该程序能够找到在给定背包容量限制下,一系列物品的最大总价值组合。物品具有不同的重量和价值,目标是在不超过背包容量的情况下最大化总价值。
1288

被折叠的 条评论
为什么被折叠?



