第四章上机实践报告
Posted jiayi25
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四章上机实践报告相关的知识,希望对你有一定的参考价值。
-
实践题目:程序存储问题
-
问题描述:设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数。
-
算法描述(说明你的贪心策略,并且参考会场安排问题,利用反证法证明贪心选择和最优子结构性质):利用贪心算法,每次都选择当前最小的程序,当剩余空间不足放入当前最小的程序,则结束。
-
#include<iostream> #include<algorithm> using namespace std; int main(){ int n,L; cin>>n>>L; int a[n]; for(int i=0;i<n;i++){ cin>>a[i]; } sort(a,a+n); int sum =0; int count=0; for(int i=0;i<n;i++){ if(a[i]<=L-sum){ sum+=a[i]; count++; } } cout<<count<<endl; return 0; }
-
算法时间及空间复杂度分析(要有分析过程):时间复杂度sort排序(nlogn),贪心算法(n),空间复杂度o(1),开辟常数级的空间
-
心得体会(对本次实践收获及疑惑进行总结):
if(a[i]<=L-sum){ sum+=a[i]; count++; }
这个if 条件一开始写的是a[i]<=L&&sum<=L
虽然过了pta,但是逻辑是错的,以后要好好想清楚逻辑,即使可能过。
以上是关于第四章上机实践报告的主要内容,如果未能解决你的问题,请参考以下文章