提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
尝试一种没写过的解法。
一、题目
传送门https://www.luogu.com.cn/problem/P5731
二、代码
def fuc(i,j,cur,sign): #位置为(i,j),写下cur,方向为sign
global n,ans
if cur>n*n:
return
ans[i][j] = cur
if (not 0<=(i+x[sign])<n) or (not 0<=(j+y[sign])<n) or ans[i+x[sign]][j+y[sign]]!=0:
sign = (sign+1)%4
fuc(i+x[sign],j+y[sign],cur+1,sign)
x = [0,1,0,-1]
y = [1,0,-1,0] #数字排列的方向是循环 右下左上
n = int(input().strip())
ans = [[0]*n for _ in range(n)]
if n==1:
print(" 1")
else:
fuc(0,0,1,0)
for i in range(n):
for j in range(n):
print("{:>3}".format(ans[i][j]),end='')
print()
标签:www,洛谷,P5731,Python,sign,ans,生成,cur
From: https://blog.csdn.net/2301_78161072/article/details/142994209