5678为什么要弄几下(放那个567)


数字华容道,一个很有趣的游戏,就是在一个n阶数字阵里,只有一个空格,位置打乱,让重新按顺序排好。自己做着做着,发现可以有方法规律,并且百用百顺,就总结并拿出来和大家共同分享探讨:

一句话经典总结:一行一行的弄顺.

拿四阶的举例:

先把1,2,3,4无论是什么顺序的弄到第一行,

第二行无论是什么数,无论是什么顺序的,不予理睬,把第一行弄顺即可,

比如2,4,3,1

先把1弄到2之前,再把3弄到4之前,具体如何摆放,可能还需要和下一行的(2,1)(2,2)(2,3)位置上的数字互换,也可能不需要,这里的(x,y)是指的下一行的x代表的行数和y代表的列数,

以此类推,直到把倒数第二行的数字也都弄好为止,

最后一行的数字在倒数第二行的数字不变位置的情况下,

按数序排好即可。

不知道大家还有什么想法?

还有,在具体每一行的位置排序时,

要注意

如每一个位置的数字只能跳到相隔偶数的位置上面,

拿一个4×4举例,

第一行是2,3, 4,1

第二行是6,5,8, 7

连在一起可以看成一个数字环,首尾相接

就是2, 3,4,1,7,8,5,6,也可以看成78562341

第一步:5跳2个数,就是25341786,

第二步:然后1跳4个数,变成12534786,

第三步:5跳4个数,变成12347856

第四步:7跳2个数变成12348576

第五步:5跳2个数变成12348765

数字环形成顺序正确,形成两行

第一行是1234,第二行是5678

至于为什么每个数都能跳过偶数个数的位置,原因就是因为每个数在通过跳跃别的数字而改变位置时,必须是它的上方或者下方出现空格时,那就是在向它同列的下一行或者上一行移位,那就是相当于跳过了两倍的它旁边的列数的个数,那就是等于跳过偶数个数的数字位置。

由此我还想到当n* n个数字华容道时,在n-1行的数字华容道都排好时,很有可能会出现最后一行却还不好的情况,那就是这个游戏没设计好,它的位置颠倒的个数总和是奇数个,而不是偶数个,拿3*3的数字华容道第三行的87来举例,需要移动的位置个数是1个,就是把8移动到7后面就行。如果在上面2行都排好的情况下,这行如果是87

那么这个数字华容道就是做不了的。

再举例,如果是4×4,假定前面全部排好,如果最后一行是13,16,15,14,那就是需要跳过奇数个位置的数字,首先,14移到16前面,需要跳过2个数,那就是13,14, 16,15,15跳到16前面,跳过1个数,那还是无法实现的。

可以这样证明,一个数列,打乱的那种,如果需要跳过的数字个数和是奇数个,但是如果你每次跳过的数字(就像数字华容道那样),个数只能是偶数个,那么是不可能能达到目标的,因为你跳过的的数字个数的总和只可能是偶数个,不可能是奇数个。