当前位置: 首页 > 知识库问答 >
问题:

贪婪算法在纸牌游戏中的一个例子

鲜于高明
2023-03-14

你玩一个新的集换式卡牌游戏。你和电脑各有一张牌。计算机放置一张卡,然后您放置卡。每张牌都有一个强度值,具有较高强度值的卡获胜。如果您和 If 计算机具有同样强大的卡,则计算机获胜。您知道计算机的卡。你的目标是计算你赢得的最大化卡牌的强度值之和。为此,您将获得两个整数数组,它们代表您的卡和计算机的卡。

你会有[5,15,100,1,5]的牌。电脑使用相同的牌,所以也使用[5,15,100,1,5]。当电脑打出100张牌时,你就下你的1张牌,因为你赢不了。如果他打出15张牌,你就下100张牌,赢了。如果他打出5张牌,你就下15张牌。如果他打出第二张5张牌,你就下5张牌,输了这一轮。如果他打出1张牌,你就用你的第5张牌进行反击。你会得到价值120英镑的获胜牌。

我的算法是:当电脑放一副牌中最大的一张牌时(这里是100),我放最小的一张,这里是1。我会继续这样做,每当我赢了,我就会写下结果

有没有人对贪婪算法有其他建议

共有1个答案

宦书
2023-03-14

你的想法是正确的。这里还有另一点需要考虑。

对于[5,15,100,1,5],

    < li >电脑掷出5,你掷出100,因为它最大。 < li >下一台计算机掷出15点,现在您的最大点数是15点,您将失去该点数。

为了避免这种情况,您应该选择给定数字的下一个最大值。

  1. 当计算机抛出 5 时,您抛出 15。
  2. 计算机抛出15时,你抛出100并得到点。

如果所有牌都是唯一的,您可以通过这种方式赢得(n-1)分,其中n是数组的大小。

因此,算法是找到下一个最大值。如果可以找到它,请返回它,否则返回数组中的最小数字。

 类似资料:
  • 问题给出如下: 有一个游戏具有n个数字(a1,a2,a3,..,an)和两个玩家的序列。玩家从序列中获取数字;在每个回合中,玩家可以选择序列中的第一个或最后一个数字。当序列被清空时,总和较大的玩家获胜;如果相等,则游戏为平局。 目标是编写一个算法,该算法返回一系列选择,以保证第一个玩家的最佳结果(获胜或平局),假设第二个玩家将发挥最佳状态。 我想出了一个递归公式,可以转化为动态规划解: 对于序列艾

  • 本文向大家介绍贪婪算法相关面试题,主要包含被问及贪婪算法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。贪婪算法所得到的结果往往不是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。贪婪算法并没有固定的算法解决框架,算法的关键是贪婪策

  • 以下是我需要咨询以寻求帮助的问题: 编写一个贪婪算法,使用贪婪算法以尽可能少的硬币进行兑换。您将获得一个硬币值数组和一个金额:。返回一个包含每个硬币计数的数组。 例如:应该返回数组,该数组指示每枚硬币的数量:2枚50美分硬币,1枚25美分硬币,1枚10美分硬币),没有镍币(5美分),和2便士(1美分),加起来是137美分。 从computeChange返回的数组应该与第一个参数(硬币)的长度相同。

  • 有人有线索为什么它对案件2不起作用吗?非常感谢你的帮助。编辑:案例2的预期结果是6130美元。我好像得到了6090美元。

  • 我试图用Java实现纸牌游戏“Skat” 规则: 有32张卡片。每张牌在游戏中只存在一次。 颜色有:梅花、黑桃、红心、钻石 价值观是:王牌,国王,王后,杰克,十,九,八,七 那些牌被洗牌了。有三名球员 第一轮:每位玩家有3张牌。然后将两张卡片放入Skat。 第二轮:每位玩家再获赠4张牌。 第三轮:每位玩家再获得3张牌。 期望输出:每个玩家的牌都被展示(每张牌都应该存在一次) 我的产量:钻石七(32

  • 本文向大家介绍PHP实现的贪婪算法实例,包括了PHP实现的贪婪算法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现的贪婪算法。分享给大家供大家参考,具体如下: 背景介绍:贪婪算法与数据结构知识库算法可以说是离我们生活最近的一种算法,人总是贪婪的嘛,所以这种算法的设计是很符合人性的。之所以这么说,是因为人们会在生活中有意无意的使用贪婪算法来解决问题。最常见的就是找零钱了,每个人