先是下,到不能填为止,然后是左,接着是上,最后是右。
不能填包括两种情况:
1.再走就出界
2.再走就走到以前填过的格子
代码如下:
n=int(input())
l=[]
for i in range(0,n): #构造一个二维的列表,同时将所有格子初始化为0
l1=[]
for j in range(0,n):
l1.append(0)
l.append(l1)
x=0
y=n-1
l[x][y]=1
tot=1
while tot< n*n:
while x+1<n and l[x+1][y]==0:
x+=1
tot+=1
l[x][y]=tot
while y-1>=0 and l[x][y-1]==0:
tot+=1
y-=1
l[x][y]=tot
while x-1>=0 and l[x-1][y]==0:
x-=1
tot+=1
l[x][y]=tot
while y+1<n and l[x][y+1]==0:
y+=1
tot+=1
l[x][y]=tot
for i in range(0,n):
for j in range(0,n):
print(str(l[i][j]).ljust(3),end=' ')
print()
运行结果: