蛮力排列

时间:2012-04-28 07:48:19

标签: algorithm

我正在阅读以下文章,无法理解第4段背后的逻辑

  

您将获得N个灯和四个开关。第一个开关切换所有灯,第二个开关是偶数灯,第三个是奇数灯,最后一个开关切换灯1,4,7,10 ...... ....

     

考虑到灯的数量,N,按下按钮的次数(最多10,000次),以及某些灯的状态(例如,灯7关闭),输出灯可能处于的所有可能状态

     

天真地,对于每个按钮按下,你必须尝试4种可能性,总共4 ^ 10000(大约10 ^ 6020),这意味着你无法进行完整的搜索(这种特殊算法会利用递归)。

     

注意到按下按钮的顺序无关紧要将此数字降低到大约10000 ^ 4(大约10 ^ 16),仍然太大而不能完全搜索(但肯定会接近10 ^ 6000的因素)。

     

然而,按两次按钮与按任何按钮相同,所以你真正需要检查的是按下每个按钮0或1次。这只有2 ^ 4 = 16种可能性,当然可以在时限内解决一些迭代。

当订单总数为10000 ^ 4时无关紧要

1 个答案:

答案 0 :(得分:2)

作者规定按下按钮的次数限制为10,000:

  

按下按钮的次数(最多10,000次)

如果您知道按下按钮的顺序无关紧要,那么其他任何事情都不重要,那么重要的是按下每个按钮的次数。 4个按钮中的每个按钮有10,000种可能性,因此总体上大约10000 ^ 4。 (当然实际数字有点小,因为你不能,例如,每个按下所有四个按钮10,000次。)