题解:蓝桥云课 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# #模拟# #暴力# #省模拟赛#

【解题思路】

image

【代码详解】

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
posted @ 2026-03-04 10:44  团爸讲算法  阅读(2)  评论(0)    收藏  举报