假设 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