图片左右对称性判断 - Python 代码实现

问题描述:

你有一个 n 行 m 列的图片(矩阵),该图片的像素为 n×m。

初始时,所有像素块均为白色,RGB 是 (0, 0, 0)。每一次操作可以将一个像素块的 RGB 中的一个数字改变。

在每次操作过后,请你输出图片是否左右对称?

输入格式:

第一行三个整数 n, m, q, q 代表操作次数。

接下来 q 行,每行输入四个整数 i, j, t, c,表示将第 i 行第 j 列的格子的 RGB 值的第 t 个数增加 c,任何一个 RGB 值的任何一个数如果超出 255 则自动对 256 取模。

输出格式:

每次操作过后,如果图片左右对称,输出 'Yes',否则输出 'No'。每组询问的输出之间用换行隔开。

思路:

记录每行左半部分的 RGB 值,然后每次操作更新对应位置的 RGB 值即可。最后判断左右对称即可。时间复杂度 O(qn)。

Python 代码:

# 输入 n, m, q
n, m, q = map(int, input().split())

# 初始化图片矩阵
img = [[[0, 0, 0] for _ in range(m)] for _ in range(n)]

# 记录左半部分 RGB 值
left_half = [[[0, 0, 0] for _ in range(m // 2 + (m % 2))] for _ in range(n)]

# 处理操作
for _ in range(q):
    i, j, t, c = map(int, input().split())
    # 更新 RGB 值
    img[i - 1][j - 1][t - 1] = (img[i - 1][j - 1][t - 1] + c) % 256
    # 更新左半部分 RGB 值
    if j <= m // 2 + (m % 2):
        left_half[i - 1][j - 1][t - 1] = img[i - 1][j - 1][t - 1]

    # 判断左右对称
    symmetric = True
    for i in range(n):
        for j in range(m // 2 + (m % 2)):
            if left_half[i][j] != img[i][m - j - 1]:
                symmetric = False
                break
        if not symmetric:
            break

    # 输出结果
    print('Yes' if symmetric else 'No')
图片左右对称性判断 - Python 代码实现

原文地址: https://www.cveoy.top/t/topic/m6Ns 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录