我是靠谱客的博主 冷艳灯泡,这篇文章主要介绍c++实现回溯算法背包问题,现在分享给大家,希望可以做个参考。

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++实现回溯算法背包问题内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(128)

评论列表共有 0 条评论

立即
投稿
返回
顶部