画螺旋矩阵

提交数: 255, 通过率: 73.73%, 平均分: 76.86

题目描述:

螺旋矩阵是指一个呈螺旋状的矩阵,他的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。例如5*5的矩阵数字排列规律如图:

1658155682864537624.png

输入格式:

输入一个数n。

输出格式:

画出对应的n*n的螺旋矩阵。

数据范围:

n<=10

样例输入:

5

样例输出:

[1, 2, 3, 4, 5]
[16, 17, 18, 19, 6]
[15, 24, 25, 20, 7]
[14, 23, 22, 21, 8]
[13, 12, 11, 10, 9]

提示:

(1)对于一个n*n的矩阵,二维数组qp存储存储数字1~n*n;

(2)先从qp[0][0]开始,向右输出qp[0][0] -qp[0][n-1];继续向下输出qp[1][n-1]-qp[n-1][n-1];继续向左输出qp[n-1][n-2]-qp[n-1][0];继续向上输出qp[n-2][0]-qp[1][0],这样完成一次输出;

(3)第i遍从qp[i][i]开始,按照第(2)步的方法进行……直到最后完成输出。

实现该算法的程序段如下:

def func( arr, x, y, num, n ) :
    if n <= 0: return
    if n == 1:
        arr[x] [y] =  ____(1)____
        return
    for i in range( n ):    #向右输出数字
        ________(2)________
        num+=1
    for i in range( n - 1 ):    #向下输出数字
        arr[x+1+i] [y+n-1] =num
        num+= 1
    for i in range( n - 1 ):  #向左输出数字
        arr[x+n-1] [y+n-2-i] =num
        num+=1
    for i in range( n - 2):  #向上输出数字
        arr[x+n-2-i][y] = num
        num += 1
    func(_______(3)_______)

n = int(input( ) )
qp = [  [0]*n for i in range(n)  ]#初始化
func( qp, 0,  0, 1, n )
for tmp in qp:
    print(tmp)
时间限制: 1000ms
空间限制: 256MB

来源: 原创