我有一个约瑟夫问题变体的问题。其描述如下:
\n有 m 张卡片,编号从 1 到 m\xef\xbc\x8c,每张卡片都有唯一的编号。这些卡片被分发给围坐一圈的 n 个人。请注意m >= n。
\n然后我们选择坐在“p”位置的人“A”出圈,就像约瑟夫斯问题一样。下一步我们跳过p右边的“k”个人,而k是“A”人拿的牌的编号,我们做同样的事情,直到圈子里只剩下一个人。
\n问题是给定n个人和m张牌,我们是否可以选择n张牌并将它们分配给n个人,使得无论从哪个位置开始(排除第一个位置),最后生存的人始终是队伍中的第一个人圆圈。
\n例如,m = n = 5,唯一的解是(4,1,5,3,2)。
\n我认为这个问题是一个np完全问题,但我无法证明。有人有找到多项式时间解决方案或证明它是 np 困难的好主意吗?
\n--- 示例解决方案 ---
\n 2: [ 1, 2]\n 2: [ 2, 1]\n 3: [ 1, 3, 2]\n 3: [ 3, 1, 2]\n 4: [ 4, 1, 3, 2]\n 5: [ 4, 1, 5, 3, 2]\n 7: [ 5, 7, 3, 1, 6, 4, 2]\n 9: [ 2, 7, 3, 9, 1, …Run Code Online (Sandbox Code Playgroud)