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分数更高,所以Amal获胜。

解决方法:

  • n := A_Values的长度
  • combinedValues := 新列表
  • for i in range(0, n):
    • tmpV := A_Values[i] + B_Values[i]
    • 将(tmpV, i)添加到combinedValues列表的末尾
  • 将combinedValues列表按降序排序
  • score_a := 0, score_b := 0
  • for i in range(0, n):
    • curV := combinedValues[i]
    • if i % 2 == 0:
      • score_a := score_a + A_Values[curV[1]]
    • else:
      • score_b := score_b + B_Values[curV[1]]
  • if score_a > score_b:
    • return 1
  • elif score_a == score_b:
    • return 0
  • else:
    • return -1

示例

让我们看下面的实现,以便更好地理解:

Open Compiler
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]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

1

更新于:2021年10月6日

浏览量:330

开启你的职业生涯

完成课程获得认证

开始学习
广告