第四章实践

1.题目

程序存储问题

2.问题描述

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

3.算法描述

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
	int n, l, i, num[1000], cnt;
	cnt = 0;
	cin>>n>>l;
	for(i = 0; i < n; i++) {
		cin>>num[i];
	}
	sort(num, num+n);
	for(i = 0; i < n; i++) {
		if(num[i] <= l) {
			l -= num[i];
			cnt++;
		}
	}	
	cout<<cnt<<endl;
	return 0;
}

4.时间空间复杂度分析

算法用了一个一维数组,空间复杂度为o(n)

时间复杂度为o(n)

5.心得:这是一个比较简单的贪心选择问题,时间复杂度的分析要加强。

  

posted @ 2018-12-02 14:39  ewerin  阅读(154)  评论(0)    收藏  举报