【蓝桥杯】省赛无忧班(Python 组)第 2 期 10.3模拟

# #1.饮料换购
# n = int(input())
# ans = n
# while n >= 3:
#     n -= 3
#     ans += 1
#     n += 1  # 假设这里是想在循环结束后给n加1
# print(ans)
#
# n = int(input())
# ans = n  # 初始化为0
# while n >= 3:
#     ans += n // 3
#     n = n // 3+n % 3
# print(ans)
#
# #2.图像模糊
#
# n, m = map(int, input().split())
# # 二维数组的读入
# Map = []
# for i in range(n):
#     a = list(map(int, input().split()))
#     Map.append(a)
#
# ans = [[0] * m for i in range(n)]
# dirs = [(0, 0), (0, 1), (1, 0), (0, -1), (-1, 0), (1, 1), (1, -1), (-1, 1), (-1, -1)]
#
# for i in range(n):
#     for j in range(m):
#         cnt, tot = 0, 0
#         for dir in dirs:
#             x = i + dir[0]
#             y = j + dir[1]
#             if 0 <= x < n and 0 <= y < m:
#                 cnt += 1
#                 tot += Map[x][y]
#         if cnt > 0:  # 避免除以0的错误
#             ans[i][j] = tot // cnt
#
# for x in ans:
#     print(' '.join(map(str, x)))  # 使用空格作为分隔符
#
# n, m = map(int, input().split())
# Map = []
# for i in range(n):
#     a = list(map(int, input().split()))
#     Map.append(a)
#
# ans = [[0] * m for i in range(n)]
#
# for i in range(n):
#     for j in range(m):
#         tot, cnt = 0, 0
#         # 遍历每个位置(i,j)求出模糊后的结果
#         # (i-1,j-1)(i-1,j+0)(i-1,j+1)
#         # (i+0,j-1)(i+0,j+0)(i+0,j+1)
#         # (i+1,j-1)(i+1,j+0)(i+1,j+1)
#         # 遍历周围的3*3区域
#         for delta_x in [-1, 0, 1]:
#             for delta_y in [-1, 0, 1]:
#                 x = i + delta_x
#                 y = j + delta_y
#                 # 判断坐标(x,y)是否存在
#                 if 0 <= x < n and 0 <= y < m:
#                     # 更新和、个数
#                     tot += Map[x][y]
#                     cnt += 1
#                     # 避免除以0
#         if cnt > 0:
#             ans[i][j] = tot // cnt
#
# for a in ans:
#     print(" ".join(map(str, a)))

'''
在这段代码中,for delta_x in [-1, 0, 1]: 和 for delta_y in [-1, 0, 1]: 是两个嵌套的循环,用于遍历一个3x3的区域,其中中心点是当前考虑的位置 (i, j)。
delta_x 和 delta_y 分别表示在x轴和y轴上的偏移量。这些偏移量用于确定哪些相邻位置应该被考虑在内。

具体来说:

delta_x 可以是 -1, 0, 或 1,表示相对于当前位置 (i, j) 在x轴上的偏移。
delta_y 可以是 -1, 0, 或 1,表示相对于当前位置 (i, j) 在y轴上的偏移。
将这些偏移量加到当前位置 (i, j) 上,就可以得到相邻位置的坐标 (x, y)。

例如,如果当前位置是 (i, j),那么:

(i - 1, j - 1) 是左上角的相邻位置(当 delta_x = -1 且 delta_y = -1 时)。
(i - 1, j) 是左边的相邻位置(当 delta_x = -1 且 delta_y = 0 时)。
(i - 1, j + 1) 是左下角的相邻位置(当 delta_x = -1 且 delta_y = 1 时)。
以此类推,还包括正上方、正右方、正下方、正左方、右上角、右下角等位置。
通过这种方式,这两个嵌套的循环遍历了当前位置 (i, j) 的8个相邻位置(包括它自己)。然后,代码检查这些相邻位置是否在地图的边界内,如果是,则将它们的值加到 tot(总和)上,并增加 cnt(个数)的计数。最终,这些相邻位置的平均值被计算并存储在 ans[i][j] 中。
'''
#3.螺旋矩阵
n, m = map(int, input().split())
r, c = map(int, input().split())
l = int(input())  # 步长
ans = [[0] * m for i in range(n)]

# 当前坐标
x, y = 0,0
# 当前存放的值
value = 1
ans[x][y] = value
while value < n * m:
    # 往右走
    while y + l < m and ans[x][y + l] == 0:
        value += 1
        y += 1
        ans[x][y] = value
    # 往下走
    while x + l < n and ans[x + l][y] == 0:
        value += 1
        x += 1
        ans[x][y] = value
    # 往左走
    while y - l >= 0 and ans[x][y - l] == 0:
        value += 1
        y -= 1
        ans[x][y] = value
    # 往上走
    while x - l >= 0 and ans[x - l][y] == 0:
        value += 1
        x -= 1
        ans[x][y] = value
print(ans[r-1][c-1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值