我正在尝试这个关于位操作的问题是通过这个来解决的:
数字的美是该数字中设置的位数。A 和 B 开始玩游戏,棋盘上写着数字 N,轮到移动的玩家走到棋盘上写一个新的数字 NK,其中 k<=N,K 的美为 1。这也很重要NK的美必须等于N的美。最后成功完成他的动作的玩家赢得了比赛。
他们都以最佳方式玩游戏。
PS我不是在这里寻找代码。我想知道如何解决这个问题?
我正在尝试这个关于位操作的问题是通过这个来解决的:
数字的美是该数字中设置的位数。A 和 B 开始玩游戏,棋盘上写着数字 N,轮到移动的玩家走到棋盘上写一个新的数字 NK,其中 k<=N,K 的美为 1。这也很重要NK的美必须等于N的美。最后成功完成他的动作的玩家赢得了比赛。
他们都以最佳方式玩游戏。
PS我不是在这里寻找代码。我想知道如何解决这个问题?
这是一个典型的博弈论问题。玩家发挥最佳意味着任何玩家都会采取行动,从而最大化获胜的机会(考虑到当玩家 2 获得机会时,他也愿意这样做)。
现在在这种情况下,让我们看看允许的移动:
根据需要,数字的美应该保持不变并且k
应该具有美感,1
即仅设置 1 位(例如00000100
)
为了进一步说明,让我们假设我们只有 8 位数字。
如果您仔细观察,N
为了保持相同的美感,设置的位位于具有 ak
的(其中一个)索引处,并且在左侧与其相邻。我举个例子:N
0
1
让我们说N
是01010001
。现在 k 可以是00100000
, 00001000
. 如果你看到N-k
的美丽仍然是一样的。操作后,您会注意到它1
向右移动,因此0
向左移动。例如当N=01010001
和k=00100000
(N-k) = 00110001
。
游戏的结束位置也将是所有0's
都在左边,并且所有1's
都在右边(00000111
)。给定一个数字,您可以计算可能的移动次数N
。如果是奇数,则开始的玩家获胜,否则他输了。
现在计算这种移动的数量是简单的枚举问题。