画螺旋矩阵
提交数: 255, 通过率: 73.73%, 平均分: 76.86
题目描述:
螺旋矩阵是指一个呈螺旋状的矩阵,他的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。例如5*5的矩阵数字排列规律如图:
输入格式:
输入一个数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
来源: 原创