我必须从k
个选项中选择n
个项目,我的选择需要按照正确的顺序排列(即排列,而不是组合)。在我做出选择之后,我会收到一个提示,告诉我有多少选项是正确的,有多少是正确的顺序。
例如,如果我尝试从k=4
个项目中选择n=6
,并且正确的有序集合为5, 3, 1, 2
,则交换可能如下:< / p>
0,1,2,3
(3, 0) # 3 correct, 0 in the correct position
0,1,2,5
(3, 0)
0,1,5,3
(3, 0)
0,5,2,3
(3,0)
5,1,2,3
(4,1)
5,3,1,2
(4,4)
-> correct order, the game is over
问题是,我只是尝试了有限的尝试才能使订单正确,所以如果n=6, k=4
,那么我只会尝试t=6
次尝试n=10,k=5
t=5
,如果n=35,k=6
则t=18
。
我在哪里开始编写解决此问题的算法?这几乎就像是一个约束求解问题。困难的部分似乎是我只知道一件事情,如果我一次只改变一件事,但是它的上限远远超过我得到的尝试次数。
答案 0 :(得分:1)
正如我所看到的,这是主谋棋盘游戏的变种http://en.m.wikipedia.org/wiki/Mastermind_(board_game)
此外,您可以在本文中找到有关此问题的更多详细信息
答案 1 :(得分:1)
算法的一个简单策略是提出与之前所有提示一致的下一个猜测。这最终将导致正确的解决方案,但很可能不是尽可能少的猜测。