遍历算法和贪心算法求得的解是相同的吗
取数游戏
有AB 两个人轮流取2n个数中的n个数,取数之和大者为胜,若相同则先取者胜。请用算法让先取数的人胜(取数时只能看到2n个数的两边的数,即每次都只能看到该头和尾)
假设这组数为:6,16,27,6,12,9,2,11,6,5。用贪心策略每次两人都取两边的数中较大的一个数
算法分析:
用贪心算法的情况来看:
假设A,B两人取数,每次都只能取两边,那么6,16,27,6,12,9,2,11,6,5,先取者胜,以A先取,取数结果为:
第几次取数12345总和A6271251161B16696229
所以A胜出
但是如果数据的不同也将会影响结果
假设这组数据为:
16,27,7,12,9,2,11,6 如果仍然用贪心算法,先取数时A败
第几次取数1234总和A16791143B27126247
所以B胜出
其实,我们只能看到两边的数据,无论是先取还是后取都无法保证100%胜出,因此我们这时一般的策略是用近似贪婪算法。
数学模型建立:
假设A和B玩这游戏,N个数排成一行,从左到