题解:蓝桥云课 156 螺旋矩阵
【题目来源】
蓝桥云课:1.螺旋矩阵 - 蓝桥云课
【题目描述】
对于一个 \(n\) 行 \(m\) 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 \(4\) 行 \(5\) 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
【输入】
输入的第一行包含两个整数 \(n,m\),分别表示螺旋矩阵的行数和列数。
第二行包含两个整数 \(r,c\),表示要求的行号和列号。
【输出】
输出一个整数,表示螺旋矩阵中第 \(r\) 行第 \(c\) 列的元素的值。
【输入样例】
4 5
2 2
【输出样例】
15
【算法标签】
《蓝桥云课 156 螺旋矩阵》 #2020# #模拟# #暴力# #省模拟赛#
【解题思路】

【代码详解】
n, m = map(int, input().split())
r, c = map(int, input().split())
Map = [[0]*m for i in range(n)]
#模拟行进过程(x,y)=value
x,y = 0,0
value = 1
Map[x][y] = value
while value < n*m:
#不断向右走:
#1、保证下一个点不越界 2、保证下一个点没有数字
while y+1<m and Map[x][y+1]==0:
y += 1
value += 1
Map[x][y] = value
#不断向下走
#1、保证下一个点不越界 2、保证下一个点没有数字
while x+1<n and Map[x+1][y]==0:
x += 1
value += 1
Map[x][y] = value
#不断向左走
#1、保证下一个点不越界 2、保证下一个点没有数字
while y-1>=0 and Map[x][y-1]==0:
y -= 1
value += 1
Map[x][y] = value
#不断向上走
#1、保证下一个点不越界 2、保证下一个点没有数字
while x-1>=0 and Map[x-1][y]==0:
x -= 1
value += 1
Map[x][y] = value
print(Map[r-1][c-1])
【运行结果】
4 5
2 2
15
浙公网安备 33010602011771号