【问题标题】:number of setbits in a number and a game based on setbits数字中的设置位数和基于设置位的游戏
【发布时间】:2013-10-07 18:12:08
【问题描述】:

我正在尝试这个关于位操作的问题是通过这个来解决的:

数字的美是该数字中设置的位数。 A和B开始玩棋盘上写有数字N的游戏,轮到该移动的玩家走到棋盘上写一个新的数字NK,其中k

他们都以最佳方式玩游戏。

附:我不是在这里寻找代码。我想知道如何解决这个问题?

【问题讨论】:

标签: c++ bit-manipulation bit-shift bitset game-theory


【解决方案1】:

这是一个典型的博弈论问题。玩家发挥最佳意味着任何玩家都会做出最大程度的获胜机会(考虑到当玩家 2 获得机会时,他也愿意这样做)。

现在让我们看看允许的移动:

根据要求,数字的美感应保持不变,k 应具有美感1仅设置 1 位(例如00000100

为了进一步说明,让我们假设我们只有 8 位数字。

如果您仔细观察,为了保持N 的美感,k 中设置的位位于N 具有01 的(其中一个)索引处留在它旁边。我举个例子:

假设N01010001。现在 k 可以是0010000000001000。如果您看到N-k,那么美丽仍然是一样的。操作后,您会注意到1 向右移动,因此0 向左移动。比如N=01010001k=00100000(N-k) = 00110001

此外,游戏的结束位置将是所有0's 都在左边,所有1's 都在右边(00000111)。给定数字N,您可以计算可能的移动次数。如果是奇数,则开始的玩家获胜,否则他就输了。

现在计算这种移动的数量是简单的枚举问题。

【讨论】:

  • 不是number of moves 等于没有。 0's 的最高有效位右侧?
猜你喜欢
  • 2013-01-11
  • 2022-07-21
  • 1970-01-01
  • 2022-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
相关资源
最近更新 更多