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)
运用了一维数组存储程序长度
5.心得体会(对本次实践收获及疑惑进行总结)
本次实践采用贪心算法,主要是要确定贪心策略,这样就会简便一些,在学习了贪心算法以后在实践时运用使我对此算法理解更加地深刻,且总体来说此题比较简单也容易上手所以没有遇到特别大的困难。
原文地址:https://www.cnblogs.com/VKookie/p/10044957.html
时间: 2024-10-07 16:46:55