更新时间:2020-12-09 12:03
大数学家欧拉曾提出一个问题:即从不同的6个军团各选6种不同军阶的6名军官共36人,排成一个6行6列的方队,使得各行各列的6名军官恰好来自不同的军团而且军阶各不相同,应如何排这个方队?如果用(1,1)表示来自第一个军团具有第一种军阶的军官,用(1,2)表示来自第一个军团具有第二种军阶的军官,用(6,6)表示来自第六个军团具有第六种军阶的军官,则欧拉的问题就是如何将这36个数对排成方阵,使得每行每列的数无论从第一个数看还是从第二个数看,都恰好是由1、2、3、4、5、6组成。历史上称这个问题为三十六军官问题。
三十六军官问题提出后,很长一段时间没有得到解决,直到20世纪初才被证明这样的方队是排不起来的。尽管很容易将三十六军官问题中的军团数和军阶数推广到一般的n的情况,而相应的满足条件的方队被称为n阶欧拉方。欧拉曾猜测:对任何非负整数t,n=4t+2阶欧拉方都不存在。t=1时,这就是三十六军官问题,而t=2时,n=10,数学家们构造出了10阶欧拉方,这说明欧拉猜想不对。但到1960年,数学家们彻底解决了这个问题,证明了n=4t+2(t≥2)阶欧拉方都是存在的。
除了上面的定义外需要注意的是每个组合不能重复,如2阶方正会出现类似如下情况:
(1,1) (2,1)
(2,2) (1,2)
由于出现类似(1,1)的重复,问题中36个军官不可能同时站在不同位置,故不满足需求,所以2阶方正不存在。根据计算机编程能很容易求得3,4,5阶的方正,由于组合众多,现举例如下:
3阶:
(1,1) (2,2) (3,3)
(2,3) (3,1) (1,2)
(3,2) (1,3) (2,1)
4阶:
(2,1) (4,4) (3,2) (1,3)
(4,2) (2,3) (1,1) (3,4)
(3,3) (1,2) (2,4) (4,1)
(1,4) (3,1) (4,3) (2,2)
5阶:
(1,1) (2,2) (3,5) (4,3) (5,4)
(4,5) (1,3) (5,2) (3,4) (2,1)
(2,4) (5,5) (4,1) (1,2) (3,3)
(5,3) (3,1) (1,4) (2,5) (4,2)
(3,2) (4,4) (2,3) (5,1) (1,5)
c++ 代码如下: