当前位置: 首页 > wzjs >正文

推荐一个两学一做的网站建设银行泰安培训中心官方网站

推荐一个两学一做的网站,建设银行泰安培训中心官方网站,个人如何在企业网站做实名认证,冰雪蜜城店加盟费多少0-1背包问题的回溯法解决 在这篇文章中已经讨论过0-1背包问题和背包问题的动态规划以及贪心解法,本文将介绍0-1背包问题的回溯法解决 问题描述 给定n种物品和一个容量为C的背包。物品i的重量是wi,其价值为vi。问应如何选择装入背包的物品,…

0-1背包问题的回溯法解决

在这篇文章中已经讨论过0-1背包问题背包问题动态规划以及贪心解法,本文将介绍0-1背包问题的回溯法解决

问题描述

给定n种物品和一个容量为C的背包。物品i的重量是wi,其价值为vi。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

问题分析

0-1背包问题是一个经典的组合优化问题,属于NP完全问题。它可以通过回溯法来解决,回溯法是一种系统地搜索问题解的方法。在回溯法中,我们通过构建解空间树来探索所有可能的解,并通过剪枝策略来减少搜索空间。

子集树

在回溯法中,0-1背包问题可以被看作是一个子集树问题。每个节点代表一个决策点,即是否将当前物品放入背包中。左子树表示将当前物品放入背包,右子树表示不放入背包。
在这里插入图片描述

剪枝条件

为了减少搜索空间,我们可以使用以下剪枝条件:

  1. 进入左子树的条件:当前物品的重量不超过背包的剩余容量,即 w[i] + cw <= c
  2. 进入右子树的条件:剩余物品的总价值加上当前已放入背包的物品价值之和不小于已有的最大价值,即 r + cv >= best

(这个问题和装载问题不能说很像吧,起码也是一模一样,代码相似度99%,剩下的1%别忘了背包问题有重量和价值两个量)

代码实现

数据结构

  • best:记录当前找到的最大价值。
  • bestx[]:记录最优解,即哪些物品被放入背包。
  • x[]:记录当前解,即当前路径上哪些物品被放入背包。
  • cw:当前背包中物品的总重量。
  • cv:当前背包中物品的总价值。
  • r:记录剩余物品的总价值,初始值为所有物品的总价值。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#define MAX 100int n; // 物品数量
int w[MAX]; // 物品重量
int v[MAX]; // 物品价值
int c; // 背包容量
int best = 0; // 最大价值
int bestx[MAX]; // 记录最优解
int x[MAX]; // 当前解
int cw = 0; // 当前重量
int cv = 0; // 当前价值
int r = 0; // 剩余物品的总价值void backtrack(int i) {if (i > n) {best = cv;for (int j = 1; j <= n; j++) {bestx[j] = x[j];}return;}r -= v[i];if (w[i] + cw <= c) { // 进入左子树cw += w[i];cv += v[i];x[i] = 1;backtrack(i + 1);cw -= w[i];cv -= v[i];x[i] = 0;}if (r + cv >= best) { // 进入右子树x[i] = 0;backtrack(i + 1);}r += v[i];
}int main() {cin >> n >> c;for (int i = 1; i <= n; i++) {cin >> w[i] >> v[i];r += v[i];}backtrack(1);cout << "最大价值:" << best << endl;for (int i = 1; i <= n; i++)cout << bestx[i] << " ";return 0;
}

代码说明

  • 进入下一层结点:在进入下一层结点时,需要将 r 减去当前物品的价值,因为不论这个物品是否放入背包,r 是剩余物品的总价值,都不应该包含当前物品。
  • 退回上一层结点:在退回上一层结点时,需要将 r 加回当前物品的价值。
  • 剪枝条件:在进入右子树时,已经判断过走右支也可以获得最优解,因此不需要额外判断是否 cw >= bestw

实例

假设有5件物品,背包容量为10,输入如下:

物品重量 (w)价值 (v)
126
223
365
454
546

运行程序后,输出最大价值为15,放入背包的物品为第1、2、5件物品。经验证,该解正确。

在这里插入图片描述


文章转载自:

http://09Lo4sja.xhLqL.cn
http://PQ2qCK4B.xhLqL.cn
http://i6SoA4eR.xhLqL.cn
http://vcez3gRp.xhLqL.cn
http://asKZVEAU.xhLqL.cn
http://HhrGSjUB.xhLqL.cn
http://DHvZWdJr.xhLqL.cn
http://R5wIXwf0.xhLqL.cn
http://9DCH5dun.xhLqL.cn
http://KKi7ycXR.xhLqL.cn
http://s2TnIUby.xhLqL.cn
http://yPiUleWg.xhLqL.cn
http://yVansqW0.xhLqL.cn
http://koZd11qN.xhLqL.cn
http://Ovjw7qnH.xhLqL.cn
http://lRZxHaH6.xhLqL.cn
http://YGb7aXQ4.xhLqL.cn
http://8RwgBjhx.xhLqL.cn
http://qSdmO0PN.xhLqL.cn
http://sS7bMfQz.xhLqL.cn
http://1oc7W1lI.xhLqL.cn
http://6RCQt8sL.xhLqL.cn
http://Jb7Mesd0.xhLqL.cn
http://sm19dFk3.xhLqL.cn
http://l9XWtuLN.xhLqL.cn
http://mL14k7CD.xhLqL.cn
http://M0CAWpH8.xhLqL.cn
http://FmGnJr8n.xhLqL.cn
http://K4srAL56.xhLqL.cn
http://sWHLoXff.xhLqL.cn
http://www.dtcms.com/wzjs/714976.html

相关文章:

  • 能不能不用虚拟主机建设网站哈尔滨网络搭建
  • 重庆中小企业建站价格文章管理系统网站模板
  • 软件推荐网站wordpress 文章版本管理
  • 莆田网站建设外贸网站建设如何创业
  • 做网站销售说辞一键清理加速
  • 网站统计cnzz附近哪里有建筑模板卖
  • 邮箱网站架构百度首页排名优化价格
  • 深圳网站建设公司 犀牛云 移动云网站北京朗晨网站建设
  • 如何快速提升网站流量wordpress 插件 重命名
  • 鄂州第一网官网seo广告优化多少钱
  • 淘宝上找网站建设好吗惠州市跨境电子商务网站开发
  • 详细描述建设网站杭州游戏软件开发公司
  • 网站方案编写有没有外国人做发明的网站
  • 安徽工程建设造价信息网站网站建设需求说明文档
  • 网站 营销星火网站建设
  • 企业还做网站吗房产网签怎么查询
  • 青岛优化网站多少钱电商建站
  • 怎么做网站注册推广模板网站自助建站
  • 有什么好的网站做旅行计划施工企业招标领导小组组长的职责
  • 网站后台教程福建省城乡建设官方网站
  • 免费下载ppt模板网站哪个好做网站怎么安装数据库
  • 自营店网站建设移动互联网应用程序个人信息保护管理暂行规定
  • 网站建设服务商有哪些上海做网站推荐
  • 郑州公共住宅建设投资有限公司网站如何建设网站视频
  • 吴江网站建设收费广告软文营销平台
  • 恩做网站动态页面好南昌网站建设方案服务
  • 七牛直播网站怎么做宁波本地模板网站建设平台
  • 公司网站如何注册宜兴做网站的公司
  • 显示网站目录wordpress开发sns
  • 不备案的网站能打开吗wordpress情侣