434
社区成员
发帖
与我相关
我的任务
分享在这里给出一组输入。例如:
6 50
2 3 13 8 80 20
在这里给出相应的输出。例如:
5
为了使磁带上存储的程序数尽可能多,将输入数据从小到大依次相加,直到数据长度大于磁带长度时,结束循环,输出所加的数据个数。
所以先排序,用内置函数sort()实现,使得数组变为一个非递减序列,从左向右依次选取元素直至磁带已经无法再放下任何一个程序。
排序后:2 3 8 13 20 80
假设用以上方法不是最佳答案。
假设我们先选取第1个,之后我们不选取剩余程序段中最小的,我们选择l3放入磁带中,再从l4,l5……ln中选择下一个放入的程序段,但由于这是个非递减序列,所以我们取到了l5就结束了,这样子结果输出为4
显然原答案所得到的程序数量是5,大于我们这样选取得到的数量4,因此不可能在有别于我们猜想的方法中得到更优解,假想得证。
贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法
贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果