在Python中查找石头游戏的赢家的程序
假设Amal和Bimal正在玩一个游戏,Amal的回合首先出现。游戏如下所示−
一堆石头中有n个。每个玩家可以从堆中取走一块石头,并根据该石头的位置获得分数。Amal和Bimal可能以不同的方式评估石头。
我们有两个具有相同长度的数组,A_Values和B_Values。 每个A_Values[i]和B_Values[i]表示Amal和Bimal如何评估第i块石头。在取出所有石头后,得分最高的人将是赢家。如果打成平局,则游戏结果为平局。他们两个都会最佳地玩。他们俩都知道对方的价值观。因此,如果Amal赢了,则返回1)。如果Bimal赢了,则返回-1。对于平局比赛,返回0。
因此,如果输入类似于A_Values = [2,4] B_Values = [3,5],那么输出将为1,因为Amal将以4分选择第二块石头,所以Bimal只有一次机会以3分选择第一块石头,但由于Amal得分更高,所以他获胜。
要解决此问题,我们将遵循以下步骤−
- n:= A_Values的大小
- combinedValues:=新列表
- 对于i从0到n,执行以下操作
- tmpV:= A_Values[i] + B_Values[i]
- 在combinedValues的末尾插入配对(temV,i)
- 将列表combinedValues按相反顺序排序
- score_a:= 0,score_b:= 0
- 对于i从0到n-1,执行以下操作
- curV:= combinedValues[i]
- 如果i mod 2等于0,则
- score_a:= score_a + A_Values[curV[1]]
- 否则,
- score_b:= score_b + B_Values[curV[1]]
- 如果score_a> score_b,则
- 返回1
- 否则,当score_a与score_b相同时,则
- 返回0
- 否则,
- 返回-1
示例
让我们看看以下实现以获得更好的理解−