01.13 酷叮猫Python课堂-蛇形填数

酷叮猫Python课堂-蛇形填数


[题目]

在n * n 的方阵里填入1,2,3.....n * n,要求填成蛇形. 要求 n<=8

[输出]

例如: n=4 时方阵为:

10 11 12 1

9 16 13 2

8 15 14 3

7 6 5 4

[分析]

用一个2维数组来存储这个方阵。

先从方阵的右上角开始填写 1 ,每个数据都有一个坐标 (x,y), 改变坐标,使得数据可以分布在不同的位置。

就像是一条方形的螺旋线从外面绕到里面,数字就依次分布在这条看不见的螺旋线上。

实际上,就是关于(x,y)坐标的变化问题。 每次遇到边缘转向,或者遇到已经填好的数据时也要转向.

1<= n <=8

[运行结果]

酷叮猫Python课堂-蛇形填数


[代码]

def app(n):

if n==1:

print(1)

else:

aa = [[0 for i in range(n)] for j in range(n)]

xid, yid = 0, (n-1) # 起点

i=1

for a in range(n*n):

aa[xid][yid] = i

while xid+1 xid+=1

i+=1

aa[xid][yid] = i

while yid-1>=0 and aa[xid][yid-1]==0:

yid-=1

i+=1

aa[xid][yid] = i

while xid-1>=0 and aa[xid-1][yid]==0:

xid-=1

i+=1

aa[xid][yid] = i

while yid+1 yid+=1

i+=1

aa[xid][yid] = i

for line in aa:

for a in line:

print("{:<5d}".format(a), end="")

print(' ')

if __name__=="__main__":

while True:

n = int(input("Please input number n:"))

if n>8 or n<1:

break

else:

app(n)


分享到:


相關文章: