c语言 贪心算法,C语言贪心算法

kodinid 9 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言 贪心算法问题,于是小编就整理了5个相关介绍c语言 贪心算法的解答,让我们一起看看吧。

  1. 分析贪心算法的基本原理和优缺点
  2. 哪些常见算法属于贪婪算法?
  3. 贪心算法几个经典例子?
  4. 什么是贪心算法?
  5. 贪心不足蛇吞象的典故?

分析贪心算法的基本原理和优缺点

由于贪心算法本身的特殊性,我们在使用贪心算法之前必须要进行证明,保证算法满足贪心选择性质。具体的证明方法无外乎就是通过数学归纳法来进行证明。但大部分人可能并不喜欢枯燥的公式,因而我这里提供一个使用贪心算法的小技巧。

由于贪心算法某种程度上算是动态规划算法的特例,使用条件比较苛刻,因而能够用动态规划解决的问题尽量都是用动态规划来进行先解决,如果在用完动态规划之后,提交时发现问题超时,并且进行状态压缩之后仍然超时,此时我们就可以考虑使用贪心算法来进行解决。

c语言 贪心算法,C语言贪心算法-第1张图片-安济编程网
图片来源网络,侵删)

哪些常见算法属于贪婪算法?

显然KMP和FLOYD算法不是贪心算法,FLOYD算法是使用了类似于动态规划的思想,而KMP算法则是对串的前缀进行去处理得到所有可能出现的位置从而减少不必要的位移。

贪心算法可能还有很多,但是一般能用到的可能只有这些。在确定一个问题是否能用贪心来解决的时候应该线能够证明在这里使用贪心算法的正确性(详见算法导论)

贪心算法几个经典例子?

活动安排问题] 活动安排问题是可以用贪心算法有效求解的一个很好的例子。该问题要求高效地安排一系列争用某一公共***的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共***。

设有n个活动的集合e={1,2,…,n},其中每个活动都要求使用同一***,如演讲会场等,而在同一时间内只有一个活动能使用这一***。每个活动i都有一个要求使用该***的起始时间si和一个结束时间fi,且si< fi。如果选择了活动i,则它在半开时间区间[si,fi]内占用***。若区间[si,fi]与区间[sj,fj]不相交,则称活动i与活动j是相容的。也就是说,当si≥fi或sj≥fj时,活动i与活动j相容。活动安排问题就是要在所给的活动***中选出最大的相容活动子***。

c语言 贪心算法,C语言贪心算法-第2张图片-安济编程网
(图片来源网络,侵删)

在下面所给出的解活动安排问题的贪心算法gpeedyselector中,各活动的起始时间和结束时间存储数组s和f{中且按结束时间的非减序:.f1≤f2≤…≤fn排列。如果所给出的活动未按此序排列,我们可以用o(nlogn)的时间将它重排。&nbsp;

什么是贪心算法?

贪心算法

一种改进了的分级处理方法

c语言 贪心算法,C语言贪心算法-第3张图片-安济编程网
(图片来源网络,侵删)

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。

贪心算法不是对所有问题都能得到整体最优解,关键是贪心策划

贪婪算法

算法思路

贪心算法一般按如下步骤进行:

①建立数学模型来描述问题。

②把求解的问题分成若干个子问题。

贪心不足蛇吞象的典故?

从前有一个很穷的人救了一条蛇的命,蛇为了报答他的救命之恩,于是就让这个人提出要求,满足他的愿望。

这个人一开始只要求简单的衣食,蛇都满足了他的愿望,后来慢慢的贪欲生起,要求做官,蛇也满足了他。

一直到他做了宰相,还不满足,还要求做皇帝。

蛇此时终于明了,人的贪心是永无止境的,于是一口就把这个人吞吃掉了。所以,蛇吞掉的是宰相,而不是大象。故此,留下了“人心不足蛇吞相”的典故。

出处:

贪心不足蛇吞象",意思是说:人的贪欲无止境,就像小小的蛇,竟要把庞然大物的象吞下去一样.这个俗语原从成语"巴蛇吞象"演变来的.

"巴蛇吞象"原出自《山海经 海内南经》.其文曰:"巴蛇食象,三岁而出其骨.君子服之,无心腹之疾."意思是:有一种巴蛇能吃大象(传说巴蛇生于南海,黑身子,青脑袋,长800尺),它把象吞下去后,消化三年,才把象的骨头吐出来.这种象骨服食后可治腹内的疾病。

详细故事:

从前有一个农民上山砍柴,见一条小蛇冻得发僵,非常可怜.农民就把它揣在怀里,带回家中喂养起来.小蛇慢慢长成大蛇,自己能生活了,农民就把它放在山后石洞里,渴了饮山泉,饿了吃野果,大蛇自然对农民很感激.过了些日子,大蛇的石洞口长出棵小小的灵芝.它精心守护,培育,灵芝越长越大,越长越神奇.

人们都想得到它,只因蛇的守护,谁也不敢近前.这件事被皇上知道了,就叫人四下张贴了一道皇榜:谁能***来这棵灵芝,就受重赏.这个农民想得到赏赐,就央求大蛇把灵芝送给他.大蛇答应了他的要求,农民就把灵芝献给皇上,得到一批金银财宝的奖赏.又过了些日子,皇后的眼瞎了,御医说只有龙蛇的眼珠才能治好.

皇上又想到这个献灵芝的农民,就命他去挖那大蛇的眼睛.许诺他事成之后,封他为宰相.这农民发了财,又想当官,就又来央求大蛇给他一只眼珠.大蛇只好忍痛让他挖去一只眼珠,皇后的眼睛复明了,农民遂当上宰相.他当上宰相后,养尊处优,享不尽的荣华富贵,生怕哪一天死掉,丢下这万贯家财.

于是,就想到长生不老之法.听说吃龙蛇心能够长生不老,就又到山中去找大蛇,要求再给他一颗心,成全他长生不老.大蛇见他如此贪心不足,就张嘴叫他去挖.这个贪婪的宰相一近前,就被大蛇吞下肚里,再也没回来。

到此,以上就是小编对于c语言 贪心算法的问题就介绍到这了,希望介绍关于c语言 贪心算法的5点解答对大家有用。

标签: 算法 贪心 问题