用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得分更高,所以他获胜。
示例
让我们看看以下实现以获得更好的理解-
def solve(A_Values, B_Values):
n = len(A_Values)
combinedValues = []
for i in range(n):
tmpV = A_Values[i] + B_Values[i]
combinedValues.append([tmpV, i])
combinedValues.sort(reverse=True)
score_a, score_b = 0, 0
for i in range(n):
curV = combinedValues[i]
if (i % 2 == 0):
score_a += A_Values[curV[1]]
else:
score_b += B_Values[curV[1]]
if (score_a > score_b):
return 1
elif (score_a == score_b):
return 0
else:
return -1
A_Values = [2,4]
B_Values = [3,5]
print(solve(A_Values, B_Values))输入
[2,4], [3,5]输出结果
1