第四章上机实践报告
Posted snowlxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四章上机实践报告相关的知识,希望对你有一定的参考价值。
1.程序存储问题
2.问题描述
3.算法描述
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int main(){ 6 int n,L; 7 cin >> n >> L; 8 int a[n]; 9 for(int i=0;i<n;i++){ 10 cin >> a[i]; 11 } 12 int min = a[0]; 13 sort(a,a+n); 14 int sum = 0; 15 int count = 0; 16 for(int i=0;i<n;i++){ 17 if((sum+a[i])<=L){ 18 sum = sum + a[i]; 19 count++ ; 20 } 21 else break; 22 } 23 cout << count ; 24 return 0; 25 }
数据结构:①n:文件个数;L:磁带长度;②a[n]存放每个程序存放在磁带上的长度;
③sum:记录已存放的程序的长度;④count:记录存放的文件的个数
(1)该算法调用了<algorithm>中的sort函数,将a数组递增排列
(2)先将程序长度小的程序存入文件,当存入的长度超过磁带长度的时候,就不再放入
1 for(int i=0;i<n;i++){ 2 if((sum+a[i])<=L){ 3 sum = sum + a[i]; 4 count++ ; 5 } 6 else break; 7 }
反证法证明:
设有程序长度集合E={a,b,c,d.......n}以程序长度的非减顺序排列,程序a具有最短长度
①首先必定有最优解包含程序a;
②设A包含于E是最优解且A中长度最短的程序是k。若k=a,则最优解包含程序a;
若k不等于a,则程序a 必与A中除a以外的程序相容。
另B = A - {k} ∪ {a},则B也是一个最优解
③若A是原问题的包含程序a的最优解,则 A’ = A - {a}是程序长度集合E’ = {i∈E , Si ≥ F1}的一个最优解
④设B’是E’的解且|B’|>|A‘|,则B’∪{a}是E的解且|B’|+a >|A| 。此与A是最有解矛盾
4.算法时间和空间复杂度分析
时间复杂度:T(n)= O(n)只用了一个for循环
空间复杂度:S(n)= O(1)没有申请额外的空间
5. 心得体会
这次上机的第一道题程序存储问题比较简单,很快就打出来了,但是老师有提到,排序时最好直接用sort不要自己再写,考试时也是节约时间。除此之外,上机的第二三道题目,有些测试点比较难过,特别是第二道题有10个测试点,确实比较难顶,也在一步步摸索,希望尽快打出来。
以上是关于第四章上机实践报告的主要内容,如果未能解决你的问题,请参考以下文章