算法RIDDLE
你得到一个数字x,你必须在一个2x大小的数组中设置从1到x的所有twic。规则是,数字必须放在与其值不同的单元格中。例如,如果您这样设置数字2:|2||||bex必须是这样的:|2||2||
假设x=4,那么我们有一个8个单元格的数组,我们可以这样设置数字:1 2 3 4 5 6 7 8|4|2|3|2|4|3|1|
你可以用各种方法来放置数字。
您能对10(数组大小20)、12的数字(数组大小24)执行同样的操作吗?如果是,请说明如何,如果不是,请解释每个数字的原因。
这个问题是NP完全问题,你必须尝试所有的可能性来确定可行性,并得到一组可能的解决方案。
如果你想要一个由函数1/2(4n + (-1)^n - 1)
定义的是否可以完成的是/否答案,那么从1…无穷大开始插入n的值将给出是答案的数字序列。不包括证明:)
为了澄清,解集的发现是NP完全的,并且给定N的是/否答案可以使用上面的公式来完成。(我希望我没有在这个问题上搞砸数学,它是一个生成函数)
使用10是不可能的。12是可能的。我尝试了所有13以下的整数,有一个明确的模式我相信可以证明(但我现在不知道如何证明):
1 yes
2 no
3 no
4 yes
5 yes
6 no
7 no
8 yes
9 yes
10 no
11 no
12 yes
13 yes
它可以通过递归函数来解决,该函数尝试各种可能性,如果找不到匹配,则使用回溯。