用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

猜你喜欢