当前位置: 首页 > 知识库问答 >
问题:

决定第一个玩家是否能赢得比赛

墨星鹏
2023-03-14

考虑下面这个游戏。有一组正数。每个玩家依次移除一个切片(连续的元素序列),这样它的和就是偶数。输的玩家是不能移动的玩家。对于< code>[4,5,3,7,2]示例,获胜策略(对于第一个玩家)是移除< code>[5,3]切片。您需要确定第一个玩家是否有赢棋(如果有,返回< code>slice_start和< code>slice_end索引)。

时间/空间复杂度:< code>O(n)

我想到的一件很自然的事情是从左到右计算累加和,反之亦然。在< code>[4,5,3,7,2]示例中,我们得到:< code>acc_l = [4,9,12,19,21]和< code>acc_r = [21,17,12,9,2]。

所以我几乎可以肯定这两个辅助数组会派上用场,但我无法完全理解。

我很乐意帮忙!

共有1个答案

苗承
2023-03-14

计算整个数组的总和。检查它是偶数还是奇数。同时计算数组中偶数和奇数的数量(一次完成)。这应该可以帮助您找出答案。

 类似资料:
  • 我正在使用alphabeta(minimax)搜索实现一个简单的检查器AI,并完成了实现。我有两个玩家,1和2,但无论我使用什么深度进行搜索(即使1是深度 Board是一个具有Board属性的类,该属性是一个8x8整数数组。0个空白空间 1 件白色 2块红色的 3白色国王 4红色国王

  • 给定一个玩家列表,我试图确定哪个玩家得分最高(获胜者),哪个玩家打成平手(如果有的话),然后推断剩下的玩家是一场比赛的失败者。 我尝试实现了一个球员比较器,根据得分从高到低对每个球员进行排序。当然,这将有助于找到赢家和输家。但我不知道从这里到哪里去。 我的第一个想法是迭代玩家列表,并做某种冒泡排序算法,但老实说,我不知道。我也在考虑一些递归函数。 到目前为止,我在endGame()函数中得到了以下

  • 我知道你可以得到损坏的原因 在实体损坏事件中,但是我还没有找到返回造成损坏的实体的方法。我需要找出这一点,这样我就可以检查玩家的库存中是否有某个物品。

  • 所以,在学校的一个项目中,我一直在尝试建立一个跳跃机制。然而,我一直面临的问题是,玩家可以只是四处漂浮,而不是在达到某个跳跃高度后摔倒。 我尝试过很多东西,包括按下up键时的正常想法,设置跳转等于true,然后在actionPerform方法中,将yVelester设置为-4。但是,当单击跳转键时,我记录了当时的yPotions,当当前的yPotions小于原始位置-50时,我将yVelSpeed

  • 玩家A和B以最佳方式玩游戏,交替移动。他们从1开始。每个玩家在他的回合中用[2,9]中的任何整数乘以当前数字。如果在轮到一名球员后,该数字大于或等于n,则他获胜。 A开始。给定n,谁赢了? 举个例子, 数字2,3…,9是中奖数字(玩家A会赢) 数字10,11,..,18是丢失的数字(玩家A将输) 19号,20号,..,162是中奖号码 获胜的策略是什么?如何应用斯普拉格-格伦迪定理来解决这个问题?

  • 对角线从右到左 在这里,支票中奖者代码结束。