算法第四章实验报告
-
实践题目名称
4-1 程序存储问题 (40 分)
-
问题描述
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给 定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
即给定磁带总容量和各个程序的占用空间,询问该磁带最多能存储几个程序。
-
算法描述
贪心算法:只需要将各个程序从小到大排序,并拿一个变量sum存储已占用的容量总和,进行对比即可得到结果。
具体代码如下:
-
算法时间及空间复杂度分析
时间复杂度:输入需要O(n)的时间进行输入,最快用O(nlogn)的时间复杂度进行排序,使用O(n)的时间进行结果叠加,总时间复杂度为O(nlogn),时间复杂度花费在排序上。
空间复杂度:该算法并没借助辅助空间,只是需要一个临时变量存储当前占用容量总和,所以为O(1)。
-
心得体会
这道题看着很简单,但会忽略如果全部程序都可以装下这种情况,即
-
贪心算法的个人体会和思考
贪心算法通常以自顶向下的方法简化子问题,会陷入局部最优解情况
局部最优是指解在一定范围或区域内是最优的,或求解问题的方法在一定限制条件下是最优的