资讯中心 Info
当前位置:酷叮猫 > 资讯中心 >
Python 蛇形填数
发布日期:2018-08-23 阅读次数:

[题目]

在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

 

[运行结果]

[代码]

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)

课程体系
通知公告