Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 算法谜语-根据数字的差异在数组中放置数字_Arrays_Algorithm - Fatal编程技术网

Arrays 算法谜语-根据数字的差异在数组中放置数字

Arrays 算法谜语-根据数字的差异在数组中放置数字,arrays,algorithm,Arrays,Algorithm,算法谜语 得到一个数字x,必须在一个大小为2x的数组中设置从1到x的所有twic。 规则是数字必须放在一个与它们的值不同的单元格中。 例如,如果按如下方式设置数字2: |2| | | | | bex one必须是这样的: |2 | |2|| 假设x=4,那么我们有一个由8个单元格组成的数组,我们可以这样设置数字: 1 2 3 4 5 6 7 8 |4 | 2 | 3 | 2 | 4 | 3 | 1 | 1| 您可以用多种方式放置号码 您可以对数字10(数组大小20)、12(数组大小24)执行相同

算法谜语

得到一个数字x,必须在一个大小为2x的数组中设置从1到x的所有twic。 规则是数字必须放在一个与它们的值不同的单元格中。 例如,如果按如下方式设置数字2: |2| | | | | bex one必须是这样的: |2 | |2||

假设x=4,那么我们有一个由8个单元格组成的数组,我们可以这样设置数字: 1 2 3 4 5 6 7 8 |4 | 2 | 3 | 2 | 4 | 3 | 1 | 1|

您可以用多种方式放置号码

您可以对数字10(数组大小20)、12(数组大小24)执行相同的操作吗?
如果是,请说明如何,如果不是,请说明每个数字的原因。

使用10是不可能的。有12个是可能的。我尝试了13以下的所有整数,我确信有一个清晰的模式可以证明(但目前我看不出是如何证明的):


这个问题可以用一个递归函数来解决,该函数尝试每种可能性,如果找不到匹配项,则使用回溯法。

这个问题是NP完全问题,您必须尝试所有可能性来确定可行性,并获得可能解的结果集

如果您想要一个由函数
1/2(4n+(-1)^n-1)
定义的是/否答案,则插入从1…无穷大开始的n值将给出是答案的数字序列。不包括证据:)


为了澄清这一点,解决方案集的发现是NP完全的,对于给定的N,可以使用上述公式来回答是/否。(我希望我没有在这个问题上胡乱算计,这是一个生成函数)

是家庭作业吗?如果是,请贴上标签。你到底在找什么?一个通用的case算法?您期望的复杂性是什么?最后但并非最不重要的一点:您尝试了什么?我看到它只在1、4和5上有效。它在10或12上不起作用(在2、3、6、7和8上也是如此)。每次我尝试放置一个数字时,我都会从顶部开始,然后跳过单元格直到中间。我的理论是,它只适用于这个数字:1、4和5。@MoriaAM:从我在回答中看到的模式来看,我认为它适用于等于0或1模4的任何x。
这个问题是NP完全的。
:证明/来源?此外,如果上述公式正确,则问题不是NP完全问题,因为使用此函数,您可以轻松计算多项式时间内是否有解。@生成问题所有解的amit是NP完全问题,生成关于给定N是否有效的“是”或“否”是不正确的。它可以显示使用组合数学的基础上的初始位置的任何数字。在某些情况下,最坏情况下的初始布局不能显著减少问题的规模。问题的NP-硬度与语言有关。例如,TSP是
L={(G,k)|图G有一条带权k}
的循环最短路径。在我看来,这里的语言是
L={n | |有一个n}
的解决方案,根据您的理解,这很容易解决。这个概念类似于(给定一个图-它有欧拉路径吗?),它不是NP-Hard@amit回答是/否很简单。给出的解决方案是一个2倍大小的数组,数字按任何正确的顺序排列(如果是,则说明问题的一部分)是NP-完全的。NP-完全问题的语言是什么?记住,NP完全是一类语言,那么什么是语言呢?你能正式定义它吗?
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