动态规划编程题螺旋矩阵python解法
# 如果结果列表的长度等于总的单元格数,直接返回结果
if rows * cols == 1:
return res
# 初始化步长和方向
step = 1
dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 右、下、左、上
r, c = rStart, cStart
di = 0 # 当前方向索引
# 循环直到结果列表的长度等于总的单元格数
while len(res) < rows * cols:
# 遍历当前步长,移动相应的次数
for _ in range(step):
# 更新当前位置
r += dirs[di][0]
c += dirs[di][1]
# 如果当前位置在网格范围内,加入结果列表
if 0 <= r < rows and 0 <= c < cols:
res.append((r, c))
# 改变移动方向
di = (di + 1) % 4
# 每两次改变方向后,步长加1
if di == 0 or di == 2:
step += 1
return res
示例输入
rows = 5cols = 6rStart = 1cStart = 4
创建Solution对象并调用方法
solution = Solution()result = solution.spiralMatrixIII(rows, cols, rStart, cStart)print(result)
#动态规划#