1.实践题目
程序存储题目
2.问题描述
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
3.算法描述
用一个数组存储n个正整数,它用来表示程序存放在磁带上的长度,先对给出来的数字有小到大排序,然后从小到大累加,如果没加完累加长度就大于总长度的话,就结束循环,记录当前累加了多少个数,如果已经加完,累加长度小于等于总长度的话,则输出n
4.算法时间及空间复杂度分析(要有分析过程)
由于排序使用sort()函数,其时间复杂度为O(n*lg(n)),然后对各个程序的长度进行遍历累加,时间复杂度为n 所以时间复杂度为O(n*lg(n)),空间复杂度为O(1)
5.心得体会
感觉这道题的贪心算法很快可以找出局部最优解,就是要寻找最小的储存长度,尽可能多的放进磁盘里。与搭档一起很快找出解决方法。