算法第四章实验报告

  • 实践题目名称

          4-1 程序存储问题 (40 分)

  • 问题描述

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

         给定磁带总容量和各个程序的占用空间,询问该磁带最多能存储几个程序。

  • 算法描述

        贪心算法:只需要将各个程序从小到大排序,并拿一个变量sum存储已占用的容量总和,进行对比即可得到结果。

        具体代码如下:

 

 

 

  • 算法时间及空间复杂度分析

        时间复杂度:输入需要O(n)的时间进行输入,最快用O(nlogn)的时间复杂度进行排序,使用O(n)的时间进行结果叠加,总时间复杂度为O(nlogn),时间复杂度花费在排序上。      

        空间复杂度:该算法并没借助辅助空间,只是需要一个临时变量存储当前占用容量总和,所以为O(1)。

  • 心得体会

         这道题看着很简单,但会忽略如果全部程序都可以装下这种情况,即

       

 

   

  • 贪心算法的个人体会和思考

           贪心算法通常以自顶向下的方法简化子问题,会陷入局部最优解情况

           局部最优是指解在一定范围或区域内是最优的,或求解问题的方法在一定限制条件下是最优的

           

 

 

posted @ 2021-11-12 16:13  半个一加冰  阅读(49)  评论(0编辑  收藏  举报