螺旋矩陣
什么是螺旋矩陣?
螺旋矩陣是指一個呈螺旋狀的矩陣僵芹,它的數(shù)字由第一行開始到右邊不斷變大处硬,向下變大,向左變大拇派,向上變大荷辕,如此循環(huán)。
實(shí)現(xiàn)思路
根據(jù)規(guī)律可以看出件豌,每一層都是按照右->下->左->上的順序進(jìn)行遞增疮方,由此可見可以用列表和遞歸的方式每一層每一層的實(shí)現(xiàn),直到中間完全剩下一個(奇數(shù)行)茧彤,或者遞歸實(shí)現(xiàn)填滿(偶數(shù)行)骡显。
在Python中的實(shí)現(xiàn):
def main():
lines = int(input('請輸入螺旋矩陣的行數(shù):'))
total_matrix = [[0] * lines for i in range(lines)]
show_num = 1
col = lines - 1
row = lines - 1
start_line = 0
def print_ju(start_line, col, row, show_num, ):
if row == 0:
if lines % 2 != 0:
total_matrix[lines // 2][lines // 2] = lines * lines
else:
for i in range(start_line, col): # 打印上橫行
total_matrix[start_line][i] = show_num
show_num += 1
for i in range(start_line, row, 1): # 打印右豎行
total_matrix[i][col] = show_num
show_num += 1
for i in range(row, row - col + start_line, -1): # 打印下橫行
total_matrix[row][i] = show_num
show_num += 1
for i in range(col, col - row + start_line, -1): # 打印左邊豎行
total_matrix[i][row - col + start_line] = show_num
show_num += 1
return print_ju(start_line + 1, row - 1, col - 1, show_num)
print_ju(start_line, row, col, show_num)
for i in total_matrix:
for x in i:
print(format(x, '3'), end=' ')
print()
if __name__ == '__main__':
main()
請輸入螺旋矩陣的行數(shù):10
1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 97 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19