最优装载
2015-06-06 13:33
344 查看
关键是证明可用贪心算法来求解,具体实现简单。
题目描述
有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。题目分析
采用重量最轻者先装的贪心选择策略,贪心算法可行性证明如下:
首先证明该问题有一个最优解以贪心选择开始,进一步,在做了贪心选择,即选择了集装箱1后,原问题简化为一个更小的与原问题具有相同形式的子问题。对贪心选择次数用数学归纳法即知,贪心算法Loading最终产生原问题的最优解。
PS:证明过程不是太好,可参考活动安排问题的证明。
算法实现
template<class Type> void Loading(int x[], Type w[], Type c, int n) { int *t = new int [n+1]; Sort(w, t, n); for (int i = 1; i <= n; i++) x[i] = 0; for (int i = 1; i <= n && w[t[i]] <= c; i++) {x[t[i]] = 1; c -= w[t[i]];} }
复杂性分析
算法Loading的主要计算量在于将集装箱依其重量从小到大排序,故算法所需的计算时间为O(nlogn)。相关文章推荐
- Linux 下鼠标对应的文件
- 黑马程序员_面向对象(1)
- VC如何改变编辑框的背景颜色方法
- [FZYZOJ 2102] 正整数序列
- C中的volatile用法
- linux-进程监控
- 积分图像的应用(一):局部标准差
- 积分图像的应用(一):局部标准差 分类: 图像处理 Matlab 2015-06-06 13:31 137人阅读 评论(0) 收藏
- IOS文档注释
- 【JavaScript】复选框的全选、反选,判断哪些复选框被选中
- hdu 1058 Humble Numbers
- 2015福富福大笔试——实现字符串右移
- 详解CSS的继承性及其利用
- css3文字霓虹灯光效果
- Win7下安装Hadoop
- [Unity实战]框选效果
- Longest Common Prefix
- “利润定乾坤”的商业模式陷阱将令你的企业自掘坟墓
- IOS 面试题
- HashMap 与 ConcurrentHashMap