01背包问题回溯法

01背包问题回溯法include iostream include cstring usingnamespa intn doublec doublev 100 doublew 100 doublecw 0 0 doublecv 0 0 doubleMAX put 0 0 doubleratio 100 比率 intorder 100 intput 100 voidknapsack 按比值进行排序 cstring iostream

#include 
  
    #include 
   
     using namespace std; int n; double c; double v[100]; double w[100]; double cw = 0.0; double cv = 0.0; double MAX_put = 0.0; double ratio[100];//比率 int order[100]; int put[100]; void knapsack()//按比值进行排序 { int i,j; int temporder = 0; double temp = 0.0; for(i=1;i<=n;i++) ratio[i]=v[i]/w[i]; for(i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) if(ratio[i] 
    
      n)//i>n说明物品全都能被放入 { MAX_put = cv; return; } if(cw+w[i]<=c)//未到达极限容量 { cw+=w[i]; cv+=v[i]; put[i]=1; backtrack(i+1); cw-=w[i]; cv-=v[i]; } if(bound(i+1)>MAX_put) { put[i]=0; backtrack(i+1); } } double bound(int i) { double leftw= c-cw; double b = cv; while(i<=n&&w[i]<=leftw) { leftw-=w[i]; b+=v[i]; i++; } if(i<=n) b+=v[i]/w[i]*leftw; return b; } int main() { int i; cout<<"请输入物品数量及背包容量:"; cin>>n>>c; for(i=1;i<=n;i++) { cout<<"请输入第"< 
     
       >w[i]>>v[i]; order[i]=i; } knapsack(); backtrack(1); cout<<"最大价值为:"< 
       
      
     
    
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176514.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午9:44
下一篇 2026年3月26日 下午9:45


相关推荐

  • C51浮点数显示、浮点数表示方法

    C51浮点数显示、浮点数表示方法C51中的浮点数存储方式–n年前曾在c51bbs论坛中发布过Float浮点形,它是符合IEEE-754标准的单精度浮点形数据,在十进制中具有7位有效数字。FLOAT型据占用四个字节(32位二进制数),在内存中的存放格式如下:字节地址(由低到高)0123浮点数内容MMMMMMMMMMMMMMMMEMMMMMMMSEEEEEEE其中,S为符号位,存放在最高字节

    2022年6月24日
    57
  • 协方差矩阵计算实例「建议收藏」

    协方差矩阵计算实例「建议收藏」协方差矩阵计算实例突然发现给一组数据去实际计算对应得协方差矩阵,让人有点懵,并未找到太清楚的讲解,这里举一个实例记录一下。1、别把样本数和维度数搞混了具体进行计算容易懵的原因就是很容易把样本数和维度数搞混,维度数n,那么得到的协方差矩阵就是n*n的,和样本数没啥关系。这里还是要明确一下,维度数即是每条样本中的变量数,协方差即是对不同变量的同向程度进行的衡量,下面举个例子来具体说明一下。2、实例说明一下样本:一共4条,2维的这里再强调一下,每条样本都是2维的,即每条样本都包含对两个变量

    2022年6月28日
    30
  • Kimi 新一轮10亿美元融资正在进行,估值涨至180亿美元

    Kimi 新一轮10亿美元融资正在进行,估值涨至180亿美元

    2026年3月14日
    3
  • 可灵即梦无限注册教程,免费获取积分快速使用

    可灵即梦无限注册教程,免费获取积分快速使用

    2026年3月12日
    2
  • Java开发框架!高级java工程师简历模板[通俗易懂]

    第一部分必读系列:01.学习算法和刷题的思路指南02.学习数据结构和算法读什么书03.动态规划解题套路框架04.动态规划答疑篇05.动态规划答疑篇06.回溯算法解题套路框架07.二分查找解题套路框架08.滑动窗口解题套路框架09.双指针技巧总结10.BFS算法套路框架11.Linux的进程、线程、文件描述符是什么12.Git/SQL/正则表达式的在线练习平台第二部分动态规划系列:01.动态规划设计:最长递增子序列02.经典动态规划:0-1背包问题03.经典动态规划:完

    2022年4月17日
    47
  • 【转录调控网络】典型的基因转录调控网络推导方法——布尔网络

    【转录调控网络】典型的基因转录调控网络推导方法——布尔网络基因转录调控网络推导方法 布尔网络基因网络是由细胞中参与基因调控作用的 DNA RNA 蛋白质以及代谢中间物所形成的相互作用的网络 基因网络是从分子层次上对生物系统进行研究的 其研究目标是通过基因之间的相互作用从系统的角度全面说明基因组的功能和行为以揭示复杂的生命现象 基因网络有助于从基因组层次对生命过程进行详细的解释 从而达到系统地解释细胞活动 生命活动 解释疾病的发生 发展和治疗等目标 基因网络是基因组学研究的重要内容 也是当前生物学研究的前沿 因此在研究生物体的生长 发育以及疾病等过程方面受

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号