第四次上机报告
2.问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
3.算法描述:运用贪心算法,一直取最小的长度的程序。(先是运用快排函数(sort())进行排序,再从数组开始取最小的程序装入磁带中,直到磁带装不下为止,用数组下标进行计数)
反证法:设a = {a1,a2,...,an}不包含最小长度的程序且它为最优解,b为最小长度的程序。
长度 :a1 > b
所以 b = {b,a2,...,an}也是最优解
b != a 与原题设矛盾。
所以最优解包含最小长度的程序
4.算法时间与空间复杂度的分析
时间复杂度,运用了sort()快排时间复杂度为O(nlog n),装数据和输入数据的算法均为O(n),所以时间复杂度为O(nlog n);
空间复杂度,sort()的空间复杂度为O(1),变量设置的时候运用到一维数组空间复杂度为O(n),所以空间复杂度为O(n);
5.心得体会
题目很难以理解,需要和队友多多学习