概述
c++实现回溯算法背包问题
#include <iostream>
using namespace std;
int weight[4] = { 1,2,3,4 };
int value[4] = { 3,2,4,3 };
int flag[4] = { 0 };
int maxvalue = 0;
int packweight = 0;
int packvalue = 0;
void backtrack(int node)
{
if (node == 4)
{
if (maxvalue < packvalue)
{
maxvalue = packvalue;
}
}
else
{
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
backtrack(node + 1);
}
else
{
if (packweight + weight[node] <= 8)//小于背包总容量
{
packweight += weight[node];
packvalue += value[node];
backtrack(node + 1);//继续进行深度搜索
packweight -= weight[node];//把当前物品从背包中删除,
packvalue -= value[node];//因为计算下一条路径时需要把前一次的清空
}
}
}
}
}
int main()
{
backtrack(0);
cout << "背包的最大价值:" << maxvalue;
}
最后
以上就是冷艳灯泡为你收集整理的c++实现回溯算法背包问题的全部内容,希望文章能够帮你解决c++实现回溯算法背包问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复