第四章上机实践报告

第四章实验报告
问题描述
4-1 程序存储问题 (40 分)
 

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

输入格式:

第一行是2 个正整数,分别表示文件个数n和磁带的长度L。接下来的1行中,有n个正整数,表示程序存放在磁带上的长度。

输出格式:

输出最多可以存储的程序数。

输入样例:

在这里给出一组输入。例如:

6 50 
2 3 13 8 80 20

输出样例:

在这里给出相应的输出。例如:

5
 贪心算法描述
由于有磁带长度限制,所以当超出了磁带长度时就无法满足要求了,于是我们我们为了可以多存一些程序,我们可以从所需长度小的程序先装起,这些程序所占磁带长度已达
到磁带长度时就不在装下一个程序,大于磁带长度时,不再装程序
 
程序代码
#include <iostream>
#include <algorithm>

using namespace std;
int main()
{
int n,L,num,count=0,flat=0;
cin>>n>>L;
int l[n];
for(int i=0; i<n; i++)
{
cin>>l[i];
}
sort(l, l + n);
for (int i = 0; i < n; i++)
{
count=l[i]+count;
if (count<=L)
{
flat++;
}
else break;
}
cout<<flat;
return 0;
}

 

时间复杂度分析

将每个程序先进行升序排序,然后每个一次相加与磁带长度进行比较,有n个程序,循环进行m次(m小于等于n),所以时间复杂度为O(n)

对于贪心算法的理解

我认为贪心算法就是求解某一类问题的最优解,但是这个最优解是最大或者最小,最多或者最少,而不是之前所学的最适合的才解,就比如背包问题,这个背包在不超过背

包容量的情况下,要求背包装最多东西,这个最多就是贪心选择和核心,贪心算法就要围绕如何获得最多去解这个问题。

posted @ 2021-11-13 21:40  李雯婕  阅读(31)  评论(0编辑  收藏  举报