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。。。于是我们干脆上网参考了一

下网上的方法,最后再自己打下来了。至于第一题我们还在思考中。。。