前言:
现时朋友们对“java交换两个整数的值怎么写”都比较看重,各位老铁们都需要分析一些“java交换两个整数的值怎么写”的相关资讯。那么小编在网络上收集了一些关于“java交换两个整数的值怎么写””的相关知识,希望大家能喜欢,看官们一起来了解一下吧!对称交换法解幻方难题
当幻方的阶数n为大于3的任意整数时可以排列吗?这是数学中的难题,如哥德巴赫猜想。古今中外数学家和数学爱好者,都趋之若鹜,为攻克这一碉堡前仆后继。
幻方,中国古时称“洛书”。传说大禹治水有神龟负数图出洛水助大禹。人们称此数图为“洛书”。儒家称洛书是八卦之源。数学家则定名“九宫格”用于研究数学。九宫格就是3阶幻方。中国一直止步于3阶。近代西方则创造许多方法排列出高阶,不仅排列出平面幻方而且排列出立体幻方。但是任意高阶并没有解决。我的对称交换法解决这一难题。
首先确定幻方是一个平衡体。
它的特点是每行n数和S=每列n数和S=对角线上n数和S。
假定这些数字表示重量(斤),给幻方中心一个支点,它就会像天平一样平衡。例如3阶
2 9 4
7 5 3
6 1 8
5是中心点,支点,5左列15斤,右列也是15斤,平衡。不同于天平的是,它还有另一个方向的平衡即上下方的平衡。它成为平行于地面的一个平面。
例如4阶
16 2 3 13
5 18 10 8
9 7 6 12
4 14 15 1
中心点在纵横中线的交点(图中未画出),也是一个平行于地面的平衡体。
其他,概莫能外。
结论,排列幻方就是求取方图数列平衡。就如调整天平使达到水平。
我设计一准幻方模型,其实简单,按数字大小排n行n列,类似幻方,实则不是,但是却是上楼的梯阶。
3阶:
1 2 3
4 5 6
7 8 9
4阶:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
请仔细看。看出点门道来了吧?n为奇数时,如n=3,中行中列及对角线上的数和就是幻方和,边行边列不是。n为偶数时,如n=4,则仅有对角线为幻方和,其他不是。
下一步就是如调整天平一样调整数字使对称于中轴的行或列相等。
经过反复演试,对称行(列)交换n/2个数就可达到目的。
如4阶,n=4,4/2=2,交换对称于中心的2个数。
1行和4行
1 15 14 4
○ ○ ○ ○
○ ○ ○ ○
13 3 2 16
2和15,3和14关于中心换位,奇迹出现,两行相等!
1+15+14+4=13+3+2+16=34。
关于中心的交换实现,完成行,影响列。
同法,2行和3行:
○ ○ ○ ○
12 6 7 9
8 10 11 5
○ ○ ○ ○
5和12,8和9关于中心交换完成行,影响列。
12+6+7+9=8 +10+11+ 5=34
将换位结果图示为模版,可直观变化:
○ ✕ ✕ ○
✕ ○ ○ ✕
✕ ○ ○ ✕
○ ✕ ✕ ○
符号○ 表示不交换的数, ✕ 表示对称于中心的两数交换。实现行列同步交换。
成品:
1 15 14 4
12 6 7 9
8 10 11 5
13 3 2 16
偶数高阶幻方排列都可仿此。不过有的要特殊处理。
如3阶:
1 2 3
4 5 6
7 8 9
n=3,n/2=1.5,非整数。如何进行交换呢?
借助中轴线解决。
3阶数列1 2 3公差为1,中数为2。若1与3换位,首项增2,末项减2。若1与2交换,则首项增1,中项减1。这正好是1与3交换结果的一半。
再以5阶为例,5/2=2.5。非整数。
5阶1行的数列1 2 3 4 5,公差为1。若1与5交换,首项增4,末项减4。若1与3交换,首项增2中项减2。这正是首末交换结果的一半。相对于整数来说我定它为半数交换。
继续3阶:
2 1 3
○ ○ ○
7 9 8
1与2,8与9交换,所谓半数交换。行值不变,列值变了。
○ ○ ○
6 5 4
○ ○ ○
4与6交换为整数交换,增减相等。这里1数,上面半数不是1.5数吗?
如法继续
○ ○ 4
7 5 3
6 9 ○
3与4,6与7属行与行的半数交换。
继续
○ 9 ○
○ 5 ○
○ 1 ○
1与9为整数交换。
全部完成。
2 9 4
7 5 3
6 1 8
我叙述细致繁琐,实际排列简单。
更有简捷的,将准幻方的中轴线和对角线旋转即得(见照片)。
3阶实现了1.5个数的交换。我把它定义为单位幻方,作为元素可以用于高阶。如大家所见的9阶。5阶略有不同,其对角线与中轴的交换实现0.5交换,也用于高阶,这样,任意高阶都可排列。
标签: #java交换两个整数的值怎么写