学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。
附上汇总贴:蓝桥杯备考冲刺必刷题(Python) | 汇总-CSDN博客
【题目描述】
对于一个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,表示要求的行号和列号。
其中,2≤n,m≤1000,1≤r≤n,1≤c≤m。
【输出】
输出一个整数,表示螺旋矩阵中第r行第c列的元素的值。
【输入样例】
4 5
2 2
【输出样例】
15
【代码详解】
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