用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