码迷,mamicode.com
首页 > 编程语言 > 详细

算法第四章上机实践报告

时间:2019-11-16 19:48:57      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:font   程序   tag   str   选择   复杂   strong   class   贪心算法   

实践题目

程序存储

问题描述

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

算法描述

贪心选择性质

设程序已经参照长度从小到大排序,(x1, x2, ..., xn)是程序储存问题的一个最优解,设k = min(1<=i<=n) {i | xi = 1},如果给定的程序存储问题有解,则1<=k<=n。

 当k = 1时,(x1, x2, ..., xn)是一个满足贪心选择性质的最优解。

 当k > 1时,取y1 = 1,yk = 0,yi = xi,1<i<=n,i≠k,则(n∑i=1)liyi = l1 - lk + (n∑i=1)lixi <= (n∑i=1)lixi <= L

因此,(y1, y2, ..., yn)是所给程序存储问题的可行解。此外,由(n∑i=1)yi = (n∑i=1)xi知,(y1, y2, ..., yn)是满足贪心选择性质的最优解。所以,程序存储问题具有贪心选择性质。

最优子结构性质

设(x1, x2, ..., xn)是程序存储问题的满足贪心选择性质的最优解,则x1 = 1,(x2, x3, ..., xn)是磁带长度为L-l1、待存放程序为{2, 3, ..., n}时相应程序存储问题的最优解。也就是说,程序存储问题具有最优子结构性质。

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

时间复杂度

算法的关键语句是将程序依照长度从小到大排序的语句,所以算法的时间复杂度为O(nlogn)。

空间复杂度

没有使用辅助空间,空间复杂度为O(1)。

心得体会

这次练习贪心算法第一题没有什么问题,主要是第二题对String类的掌握还不够。

算法第四章上机实践报告

标签:font   程序   tag   str   选择   复杂   strong   class   贪心算法   

原文地址:https://www.cnblogs.com/vanora-/p/11872930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!