2020-10-07

    科技2024-03-13  99

    打印n*n回型矩阵

    如下示例:

    1 24 23 22 21 20 19 2 25 40 39 38 37 18 3 26 41 48 47 36 17 4 27 42 49 46 35 16 5 28 43 44 45 34 15 6 29 30 31 32 33 14 7 8 9 10 11 12 13

    方法应该很多,本文采用从上到下,从左到右,从下到上,从右到左循环往复、逐个填充的方法。对应构造四个函数down、right、up、left。

    N = int(input("Please input N:")) A = [] for _ in range(N): temp = [] for _ in range(N): temp.append(0) A.append(temp) def down(col): for k in range(N): if A[k][col] == 0: A[k][col] = A[k - 1][col] + 1 if A[k][col] == N * N: return 1 return 0 def right(row): for k in range(N): if A[row][k] == 0: A[row][k] = A[row][k - 1] + 1 def up(col): for k in range(N - 1, -1, -1): if A[k][col] == 0: A[k][col] = A[k + 1][col] + 1 if A[k][col] == N * N: return 1 return 0 def left(row): for k in range(N - 1, -1, -1): if A[row][k] == 0: A[row][k] = A[row][k + 1] + 1 A[0][0] = 1 D, R, U, L = 0, N - 1, N - 1, 0 while True: if down(D) == 1: break right(R) if up(U) == 1: break left(L) D += 1 R -= 1 U -= 1 L += 1 length = len(str(N * N)) for kkk in A: for kk in kkk: print("{:{}}".format(kk, length), end=" ") print() D:\python38\python.exe D:/python38/1/test11.py Please input N:9 1 32 31 30 29 28 27 26 25 2 33 56 55 54 53 52 51 24 3 34 57 72 71 70 69 50 23 4 35 58 73 80 79 68 49 22 5 36 59 74 81 78 67 48 21 6 37 60 75 76 77 66 47 20 7 38 61 62 63 64 65 46 19 8 39 40 41 42 43 44 45 18 9 10 11 12 13 14 15 16 17 Process finished with exit code 0
    Processed: 0.016, SQL: 8