第四章上机实践报告

1.实践题目:4-1 程序存储问题

2.问题描述

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

3.算法描述(说明你的贪心策略,并且参考会场安排问题,利用反证法证明贪心选择和最优子结构性质)

经过对问题的分析所得的贪心策略是按长度由小到大来放程序,所以设计的算法是用数组存储长度,然后用快速排序来由小到大排序,每放入一个程序磁带长度相应减少并且放入程序数+1。

反证法:如果存在一个集合是最优解且集合内元素不是由长度最小的i个程序组成,去掉长度最小的程序后i-1个程序组成的子集为最优子结构,然而可找到其中一个长度更小的程序将子集内一个长度较大的元素置换,置换后的集合仍满足条件,表明原子集并不满足最优子结构性质。所以该贪心策略正确。

4.算法时间及空间复杂度分析(要有分析过程)

该算法的完成需要进行一次快速排序一级遍历一次数组选最小的i个程序直到放不下,所以时间复杂度为快速排序的O(nlogn),空间复杂度为O(1).

5.心得体会(对本次实践收获及疑惑进行总结)

经过这次实践课后发现贪心策略的选择是十分重要的,然而在选择过程中需要小心求证以确保正确,这方面还是需要多加练习。

posted @ 2019-11-19 00:59  陈裕恒  阅读(161)  评论(0编辑  收藏  举报