python回型算法求解

从中间开始走输入8,生成九宫格,打印1-8的(x,y)坐标输入13,因为超过了9,所以生成16宫格,打印1-13的(x,y)坐标输入17,生成25宫格,打印1-17的(x,y坐标)

回型算法

按照题目要求编写的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()

温馨提示:答案为网友推荐,仅供参考
相似回答