拼多多笔试题之【米字分割】

 给一个n(4<=n<=200),输出一个n*n的矩阵,要求在矩阵中画一个米字,处于米字边界线的格子置0,其余格子按逆时针顺序填充1~8的数字

def mi(n):
    a = [[0] * n for _ in range(n)]
    # print(a)
    mid = n // 2
    for i in range(n):
        for j in range(n):
            # 处理左上角
            if i < mid and j < mid:
                if i > j:
                    a[i][j] = 3
                elif i < j:
                    a[i][j] = 2
            # 处理右下角
            if i >= mid and j >= mid:
                if i > j:
                    a[i][j] = 6
                elif i < j:
                    a[i][j] = 7
            # 处理右上角
            if i < mid and j >= mid:
                if i + j >= n:
                    a[i][j] = 8
                elif i + j < n:
                    a[i][j] = 1
            # 处理左下角
            if i >= mid and j < mid:
                if i + j >= n:
                    a[i][j] = 5
                elif i + j < n:
                    a[i][j] = 4
            # 处理反对角线
            if i + j == n - 1:
                a[i][j] = 0

            print(a[i][j], end=' ')
        print('\n')

import sys
if __name__ == "__main__":
    # 读取第一行的n
    n = int(sys.stdin.readline().strip())

    mi(n)

"""
0 2 2 2 2 2 1 1 1 1 1 0 
3 0 2 2 2 2 1 1 1 1 0 8 
3 3 0 2 2 2 1 1 1 0 8 8 
3 3 3 0 2 2 1 1 0 8 8 8 
3 3 3 3 0 2 1 0 8 8 8 8 
3 3 3 3 3 0 0 8 8 8 8 8 
4 4 4 4 4 0 0 7 7 7 7 7 
4 4 4 4 0 5 6 0 7 7 7 7 
4 4 4 0 5 5 6 6 0 7 7 7 
4 4 0 5 5 5 6 6 6 0 7 7 
4 0 5 5 5 5 6 6 6 6 0 7 
0 5 5 5 5 5 6 6 6 6 6 0 
"""

猜你喜欢

转载自blog.csdn.net/sinat_21791203/article/details/108351234