代码改变世界

第四章上机实践报告

2019-11-17 15:58  秃头小张  阅读(97)  评论(0编辑  收藏  举报
  1. 实践题目

  程序存储问题

  1. 问题描述

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

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

  将输入的n个程序长度从小到大排列,要使得磁带上可以存储最多的程序,则应该先把短的程序先放进去,直到放进去的程序最大程度的填满磁带。

  假设最优子结构中不包含最短的程序,那么磁带剩余的空间必定小于包含最短程序的,则可存放剩余的程序也会变少,故每次挑选最短的程序放入为最优子结构。

 

 

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

  两个for循环时间复杂度为O(n),sort排序的时间复杂度为O(nlogn),故该算法时间复杂度为O(nlogn)。

  空间复杂度为O(n)。

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

  贪心算法很多时候是靠第一感觉判断问题的做法,但更多的时候应该做更周全的考虑。