我是靠谱客的博主 冷艳灯泡,最近开发中收集的这篇文章主要介绍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++实现回溯算法背包问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部