龙空技术网

Python填幻方第一篇,奇数幻方

程序员玩乐器 115

前言:

当前看官们对“奇偶排序算法c语言实现”大约比较注重,兄弟们都需要分析一些“奇偶排序算法c语言实现”的相关知识。那么小编在网络上汇集了一些对于“奇偶排序算法c语言实现””的相关资讯,希望同学们能喜欢,你们一起来了解一下吧!

幻方按照阶数可分成了三类,即奇数阶幻方、双偶阶幻方、单偶阶幻方。

本次写的是奇数阶幻方

奇数阶幻方最经典的填法是罗伯法。填写的方法是:

把1(或最小的数)放在最后一行正中;按以下规律排列剩下的(n×n-1)个数:

(1)每一个数放在前一个数的右下一格;

(2)如果这个数所要放的格已经超出了最下行那么就把它放在顶行,仍然要放在右一列;

(3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在下一行;

(4)如果这个数所要放的格已经超出了底行且超出了最右列,那么就把它放在顶行且最左列;

(5)如果这个数所要放的格已经有数填入,那么就把它放在前一个数的上一行同一列的格内。

五阶幻方

python代码(在头条中发的代码,缩进被删除了)

#encoding=utf-8class HF: def __init__(self,n): self.n = n self.list=[] for i in range(n): self.list.append([0]*n) def printHf(self): x = (self.n-1)//2 y = self.n-1 for value in range(1, self.n**2+1): self.list[y][x]=value if self.list[(y+1) % self.n ][(x+1)% self.n] == 0: x = (x+1)% self.n y = (y+1)% self.n else: y = y-1 for tmp in self.list: for x in tmp: print(x,end='\t') print()if __name__=='__main__': HF(5).printHf()

标签: #奇偶排序算法c语言实现