美文网首页
酷叮猫Python课堂 - 蛇形填数

酷叮猫Python课堂 - 蛇形填数

作者: 酷叮猫少儿编程 | 来源:发表于2019-01-13 14:07 被阅读0次

    [题目]

    在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)

    相关文章

      网友评论

          本文标题:酷叮猫Python课堂 - 蛇形填数

          本文链接:https://www.haomeiwen.com/subject/lbokdqtx.html