贪心
参考资料
贪心
贪心算法(Greedy Algorithm)是用计算机来模拟一个「贪心」的人做出决策的过程。这个人十分贪婪,每一步行动总是按某种指标选取最优的操作。而且他目光短浅,总是只看眼前,并不考虑以后可能造成的影响。
可想而知,并不是所有的时候贪心法都能获得最优解,所以一般使用贪心法的时候,都要确保自己能证明其正确性。
反悔贪心
反悔贪心的思路是无论当前的选项是否最优都接受,然后进行比较,如果选择之后不是最优了,则反悔,舍弃掉这个选项;否则,正式接受。如此往复。
例题
牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜。有些牛棚里有牛,有些没有。所有的牛棚有相同的宽度。
自门遗失以后,Farmer John 必须尽快在牛棚之前竖立起新的木板。他的新木材供应商将会供应他任何他想要的长度,但是吝啬的供应商只能提供有限数目的木板。Farmer John 想将他购买的木板总长度减到最少。
给出 ,表示木板最大的数目、牛棚的总数、牛的总数;以及每头牛所在牛棚的编号,请算出拦住所有有牛的牛棚所需木板的最小总长度。Code (1)
A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。
园林部门得到指令后,初步规划出 个种树的位置,顺时针编号 到 。并且每个位置都有一个美观度 ,如果在这里种树就可以得到这 的美观度。但由于 城市土壤肥力欠佳,两棵树决不能种在相邻的位置( 号位置和 号位置叫相邻位置。值得注意的是 号和 号也算相邻位置)。
最终市政府给园林部门提供了 棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大。如果无法将 棵树苗全部种上,给出无解信息。Code (1)