算法 第四章实践

1.实践题目

程序存储问题

2.问题描述

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

3.算法描述

for(int i=0;i<n;i++)
cin>>a[i];//将程序的长度存放在数组之中

sort(a,a+n);//将数组中的元素排序 

int num=0;int x=0;//新设置一个变量X为已存放的程序长度之和
for(int i=0;i<n;i++)
{
x=x+a[i];//从小到大加上数组内的程序长度
if(x> l) break;//当x大于磁带长度时就停止
else num++;//否则可存储程序数加1

4.算法时间及空间复杂度分析(要有分析过程)

 时间复杂度:O(nlogn)

运用了sort()排序

空间复杂度:O(n)

运用了一维数组存储程序长度

扫描二维码关注公众号,回复: 4315872 查看本文章

5.心得体会(对本次实践收获及疑惑进行总结)

本次实践采用贪心算法,主要是要确定贪心策略,这样就会简便一些,在学习了贪心算法以后在实践时运用使我对此算法理解更加地深刻,且总体来说此题比较简单也容易上手所以没有遇到特别大的困难。

猜你喜欢

转载自www.cnblogs.com/VKookie/p/10044957.html