所以这里逆序对个数+银河1331com登录2

当前位置:银河1331官网 > 银河1331com登录 > 所以这里逆序对个数+银河1331com登录2
作者: 银河1331官网|来源: http://www.doyocnc.com|栏目:银河1331com登录

文章关键词:银河1331官网,贪婪算法

  贪心算法是指在解决问题的时候,总是选择当前最好的,并希望通过一系列的最优选择,能够产生一个问题的全局最优解。

  比如我们有一个可以容纳100kg物品的背包,我们有5种豆子吗,每种豆子的总量和总价值都不一样,如何能让背包中的物品总价值最大呢?

  先算每个豆子的单价,银河1331com登录黄豆1元,绿豆3元,红豆2元,黑豆4元,青豆1.5元

  按照单价由高到底依次往背包里装就可以了,结果就是20kg黑豆,30kg绿豆,50kg红豆

  局部最优,每次选出当前步骤中的最优解,比如上面的例子中从单价最高的开始往下一个一个的加

  前面的选择会影响后面的选择,选择之后就没法改变,上面的例子使用贪心思想可以找到最优解,有时候使用贪心思想不能找到最优解,比如下面的例子

  上面是一个有权图,从顶点S开始找一条道T的最短路径。如果使用贪心算法的思想,每次都是找权重最小的那么结果是S-A-E-T,长度是1+4+4=9

  这就是前面的选择会影响后面的选择,一旦做出了选择,就不能改变了,上面的例子,我们一开始选择了最小权重1到达了A,那么A后面不管权重多大都得捏着鼻子往下走。

  假如我们有1元,2元,5元,10元,20元,50元,100元面额的纸币,他们的张数分别为c1,c2,c5,c10,c20,c50,c100。现在需要支付K元,银河1331com登录最少需要多少张纸币

  很简单,使用贪心思想,先从最大的面值开始支付,如果不够就继续使用更小一点的面值,以此类推直到支付完成。

  先把整数换成字符串,比较a+b和b+a,如果a+b=b+a,就把a放在b的前面,反之把a放在b的后面

  给定一个长度为m的区间,在给出n条线段的起点和终点,从中选出尽量多的线段,要求每个线段都是独立的,不跟其他的线段有交集。

  贪心算法不一定会给出最优解,银河1331com登录但是它简单好理解,如果一个问题可以使用多种方法解决,那么使用贪心算法也是最好的选择之一。

  分治算法顾名思义就是分而治之,就是把一个复杂的问题分成若干个相同或者相似的子问题,在把小问题分成更小的问题,直到最后的小问题可以很简单的求解,然后把各个子问题的解合并起来形成原问题的解。

  现在比较火的大数据,实际上就是使用了分治算法的思想,当数据大到一定的程度的时候,一台机器处理不了,那好就用很多台机器一起处理,把大数据分成若干个小数据分到每个机器上分别处理,然后把处理结果合并。当在处理不了的时候就加机器继续分。

  根据上面的分治算法的思想,我们可以想象一下可以使用分治思想解决的问题的特点

  有序对就是左边小于右边,逆序对就是左边大于右边,比如一组数2,4,1,5,6。逆序对就是(2,1) (4,3) (4,1) (3,1)

  我们可以通过归并排序来实现,归并排序中有个操作是把两个有序的小组合并成一个有序数组,在合并的过程中我们就可以计算着两个小组的逆序对数了。

  5和2比较5比2大,2放入数组中,5和5后面的都比2大,说明可以组成逆序对,所以这里逆序对个数+2

  5和3比较,5比3大,3放入数组中,5和5后面的都比2大,说明可以组成逆序对,所以这里逆序对个数+2

  5和4比较,5比4大,4放入数组中,5和5后面的都比2大,说明可以组成逆序对,所以这里逆序对个数+2

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农网

  本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

  《算法(英文版•第4版)》作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些Java代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。 《算法(英文版•第4版)》适合......一起来看看《算法》这本书的介绍吧!

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!