1、实践题目
程序存储问题
2、问题描述
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
3、算法描述
int n,L;
cin>>n>>L;
int l[n];
for(int i=0;i<n;i++)
{
cin>>l[i];
}
sort(l,l+n);
int t=0,s=0;
int i=0;
while(s<L&&i<n)
{
s=s+l[i];
i++;
if(s<=L)
t++;
}
cout<<t;
4、算法时间及空间复杂度分析(要有分析过程)
空间复杂度:l [ n ] ,所以空间复杂度为O(n)
时间复杂度:系统函数sort(l,l+n)——nlogn,while循环——n,
时间复杂度为O(nlogn)
5、心得体会(对本次实践收获及疑惑进行总结)
本次实践我做的这道题比较简单,而第二题我和我的小伙伴一起打了好
多代码(我们没用string,用了数组)终于勉强把题意描述的程序打出来
了一部分,然后老师告诉我们要考虑0。。。于是我们干脆上网参考了一
下网上的方法,最后再自己打下来了。至于第一题我们还在思考中。。。