算法分析与设计实践作业10
1. 问题
有一批共n 个集装箱要装上艘载重量为c 的轮船,其中集装箱i 的重量为wi。找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。

2. 解析
思路:轻者先装,直到再装任何集装箱将使船载重量超过C时停止。
定理:对于任何正整数k,算法(轻者先装)对k个集装箱的实例得到最优解。


3. 设计
在实现这个实验中主要运用了冒泡排序
冒泡排序:
For i=0 to num-1{
For j=0 to num-i-1{
If前一个集装箱的重量大于后面一个
交换
}
}
for(int i=0;i<num&&good[i].weight<=maxweight;i++)
{
maxweight-=good[i].weight;
good[i].flag=true;//标记已被装
}
4. 分析
运行结果:

时间复杂度O(nlogn)
5. 源码
github地址:https://github.com/122cmy/myGitTemp10
博客地址:https://www.cnblogs.com/122cmy/

浙公网安备 33010602011771号