算法分析回溯法实现0-1背包(c++)

算法分析回溯法实现0-1背包(c++)

ID:10020867

大小:36.00 KB

页数:4页

时间:2018-05-21

算法分析回溯法实现0-1背包(c++)_第1页
算法分析回溯法实现0-1背包(c++)_第2页
算法分析回溯法实现0-1背包(c++)_第3页
算法分析回溯法实现0-1背包(c++)_第4页
资源描述:

《算法分析回溯法实现0-1背包(c++)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本程序实现0-1背包问题算法(回溯法)/**本程序实现0-1背包问题算法(回溯法)**/#includeusingnamespacestd;#defineMAXSIZE100#defineTRUE1#defineFALSE0#defineERROR-1typedeffloatvalue;typedeffloatweight;typedefintKeyType;//定义关键字类型为整数类型typedefstruct//元素定义{weightw;//重量valuev;//价值valueq;//单位重量价值intindex;//序号booljob;//表示是否被用}Bag;typ

2、edefstruct//定义背包集{Bagr[MAXSIZE+1];//r[0]闲置或用作“哨兵单元”intlength;//背包个数}Bags;intn;//包个数inti;//辅助整型变量weightc;//背包的容量weightcw;//当前重量valuebestp=0;//当前最优价值valuecp;//当前价值BagsL;//定义背包集intPartition(Bags&L,intlow,inthigh)//快速排序//交换顺序表L中子表r[low.....high]的记录,枢轴记录到位,并返回其所在位置,此时在它之前(后)的记录均不大于它.{intshuzhou;//定义枢轴L.r

3、[0]=L.r[low];//用第一个记录作为枢轴记录shuzhou=L.r[low].q;while(low=shuzhou)--high;L.r[low]=L.r[high];while(low

4、hou;if(low

5、=n)bound+=L.r[i].v*left/L.r[i].w;returnbound;}//boundvoidbacktrack(inti){if(i>n){//到达叶子结点bestp=cp;return;}//搜索子树if(cw+L.r[i].w<=c){//进入左子树cw+=L.r[i].w;cp+=L.r[i].v;//L.r[i].job=true;//选中backtrack(i+1);cw-=L.r[i].w;cp-=L.r[i].v;//L.r[i].job=false;//未选中}if(bound(i+1)>bestp)//进入右子树backtrack(i+1);}//bac

6、ktrackvoidknapsack(weightc)//0-1背包问题主算法{QuickSort(L,1,L.length);backtrack(1);//回溯搜索}//knapsackintmain(){//输入要选择的背包信息cout<<"请输入背包的容量:"<>c;cout<<"请输入背包个数(注意:最大作业数不能超过100个!):"<>n;if(n>100){cout<<"你输入的背包个数太大!!!"<

7、){cout<<"请输入第个"<>L.r[i].w;cout<<"请输入第个"<>L.r[i].v;L.r[i].q=L.r[i].v/L.r[i].w;//单位重量价值L.r[i].index=i;//索引号cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。