回型算法
按照題目要求編寫的Python程序如下(註意源代碼的縮進,見圖)
count=1
x=50
y=50
m=int(input("請輸入壹個正整數:"))
for i in range(1,m):
if m>=i*i and m<=(i+1)*(i+1):
N=i+1
break
a=[[0 for j in range(N)] for i in range(N)]
if N%2==0:
n=int(N/2)
for i in range(n-1,-1,-1):
for j in range(N-i-2,i,-1):
a[i][j]=count
count+=1
for j in range(i,N-i):
a[j][i]=count
count+=1
k=N-i-1;
for j in range(i+1,N-i):
a[k][j]=count
count+=1
for j in range(N-i-2,i-1,-1):
a[j][k]=count
count+=1
else:
n=int(N/2)+1
for i in range(n-1,-1,-1):
k=N-i-1;
for j in range(i+1,N-i):
a[k][j]=count
count+=1
for j in range(N-i-2,i-1,-1):
a[j][k]=count
count+=1
for j in range(N-i-2,i,-1):
a[i][j]=count
count+=1
for j in range(i,N-i):
a[j][i]=count
count+=1
for i in range(0,N):
for j in range(0,N):
if a[i][j]<=m:
print("%d(%d,%d) "%(a[i][j],y+(j-n+1)*50,x-(i-n+1)*50),end='')
else:
print(f"%{N+5}s"%" ",end='')
print()