回溯法:最优装载问题
2016-04-10 19:54
295 查看
回溯法对解空间进行深度优先搜索,在一般情况下可用递归方法实现回溯法。
空间树理解:
假设装载的集装箱n=3,则空间树可以表示为上图,就是1表示装入该集装箱,0表示不装入该集装箱,最优装载问题就是在这些空间树里,寻找最优子结构。我想看到此处应该不难理解。
具体测试代码:
空间树理解:
假设装载的集装箱n=3,则空间树可以表示为上图,就是1表示装入该集装箱,0表示不装入该集装箱,最优装载问题就是在这些空间树里,寻找最优子结构。我想看到此处应该不难理解。
具体测试代码:
public class bestLoading { static int n;//集装箱数量 static int []w;//箱子重量数组 static int c;//第一艘船的载重 static int cw;//当前的载重量 static int bestw;//最优载重 static int r;//剩余集装箱的重量 public static int maxLoading(int []ww,int cc){ n=ww.length-1; w=ww; c=cc; cw=0; bestw=0; r=0; for(int i=1;i<=n;i++){ r+=w[i]; } backtrack(0); return bestw; } private static void backtrack(int i){ if(i>n){ if(cw>bestw) bestw=cw; return; } r-=w[i]; if(cw+w[i]<=c){ cw+=w[i]; backtrack(i+1); cw-=w[i]; } if(cw+r>bestw) backtrack(i+1); r+=w[i]; } public static void main(String []args){ int []ww={1,7,4,20,9,11}; int c=26; System.out.println(maxLoading(ww,c)); } }
相关文章推荐
- 【转】Android自定义控件
- ACM学习历程—广东工业大学2016校赛决赛-网络赛C wintermelon的魔界寻路之旅(最短路 && 递推)
- 团队项目视频介绍
- 手机WiFi和热点为何不能同时开
- 一步一步搭建属于自己的博客(wordpress)
- 【LeetCode】77. Combinations,DFS的变形应用
- 团队项目——跑什么操 发布视频
- 团队及项目介绍
- http://blog.csdn.net/rainkin1993/article/details/8592617/
- 06-图2 Saving James Bond - Easy Version
- 采用TCP协议的PIC32MZ ethernet bootloader
- C# 中传参中的OUT 和 ref 区别 笔记
- 团队项目及成员
- 面试题57 删除链表中重复的结点
- Spark系列(八)Worker工作原理
- C语音switch参数的类型问题
- Maximum Subarray
- 2014年春季大学先修课考试 解题报告
- 第四章 consul cluster
- Redis主从复制