算法第四章实践报告

实践题目:程序存储问题

问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。

算法描述:由于要尽可能多的将程序存储,所以按照贪心算法,我们每次都将最小占用存储的程序放入磁带上,这样就能保证每次消耗的磁带最少,还可以装的最多,以达到存储程序最多的目的。

int num = 0;
int i = 0;
int p = a[i];
while(p <= L){
num++;
i++;
p = p + a[i];
}
if(num > n){
cout<<n;
}
else if(num <= n){
cout<<num;
}
}

算法时间复杂度与分析:o(logN)一次while循环,且p>L时就跳出循环

心得体会:本题难度不算太大,但却很好地体现了贪心算法的特性,即在局部找出最优解,最终得到全局最优解,贪心算法给了我们一种比较好的思路,不过就是证明起来难度不小,还需继续努力。

posted on 2018-12-02 12:17  李鉴涛  阅读(79)  评论(0编辑  收藏  举报

导航