小编Leo*_*ard的帖子

将一组分成具有最小移动次数的k组

您有一组n个对象,其中给出了整数位置.一对象是同一位置的一组对象(不一定是该位置的所有对象:单个位置可能有多个组).对象可以向左或向右移动,目标是移动这些对象以形成k组,并在移动的最小距离的情况下移动.

例如:

  • 初始位置为[4,4,7],k = 3:最低成本为0.
  • [4,4,7]和k = 2:最低成本为0
  • [1,2,5,7]和k = 2:最低成本是1 + 2 = 3

我一直在尝试使用贪婪的方法(通过计算哪个移动最短),但这不起作用,因为每次移动都涉及两个可以移动的元素.我还没有能够制定动态编程方法,但我正在研究它.

algorithm

7
推荐指数
1
解决办法
1827
查看次数

2人游戏的最佳策略

  • 2名玩家A和B正在玩一个涉及数字n的游戏
  • 玩家A进行第一步并且两个玩家交替进行游戏.
  • 在每个移动玩家需要的数量n,选择一个数使得2 ^ I <n的和替换ÑK = N - 2 ^ I当且仅当在二进制表示中1的个数ķ大于或等于所述n的二进制表示中的1的数量
  • 当没有玩家可以进行移动时游戏结束,即不存在这样的i

例如:

n = 13 = b1101
Run Code Online (Sandbox Code Playgroud)

只有可能i = 1

k = n - 2^i = 11 = b1011
Run Code Online (Sandbox Code Playgroud)

同样,只有i = 2

k = n - 2^i = 7 = b111
Run Code Online (Sandbox Code Playgroud)

由于玩家A无法再进行任何动作,因此玩家B获胜

我推断,在任何步骤中,我们只能选择一个i,这样在n的二进制表示中的相应位置处有一个0.

例如:如果n = 1010010,那么我只能是{0,2,3,5}.

但是我无法继续前进.极小极大算法并不是让我感到惊讶.我会感激任何帮助.谢谢你提前

algorithm

6
推荐指数
1
解决办法
1724
查看次数

标签 统计

algorithm ×2