AtCoder Beginner Contest 375 C题 (python解)

Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)C - Spiral Rotation(python解)**

原题链接:

()

题目简述:

这道题要求对一个 N x N 的网格进行特定的螺旋旋转操作,而这个 N 总是偶数。在这里,网格中的每个单元格可以是黑色(用 # 表示)或白色(用 . 表示)。我们需要根据题目的描述,通过一系列的操作最终输出网格的颜色状态。

思路:

​ 对于 i =1N/2,在每个 i进行 (i +1) %4 次旋转。也就是说:i =1 时执行2 次旋转 - i =2 时执行3 次旋转 - i =3 时执行0 次旋转 - i =4 时执行1 次旋转 -依此类推......

旋转的定义是将相应的颜色值从一个位置移动到另一个位置。

python代码

def 复制代码
def func(N, i, A):
    r = N-1-i#计算当前层的右边界
    for j in range(i,r):# 执行四个位置的颜色值交换,实现螺旋旋转
        (A[j][r], A[r][N-1-j], A[N-1-j][i], A[i][j]) = (A[i][j], A[j][r], A[r][N-1-j], A[N-1-j][i])
def main():
    N = int(input())
    A = [list(input()) for _ in range(N)]#读取网格数据
    for i in range(N//2):# 遍历每一个层次,从外层到内层(共 N/2 层)
        for j in range((i+1)%4):# 根据当前层数 i计算旋转次数
            func(N, i, A)
    print("\n".join("".join(i) for i in A))# 输出最终的网格状态,将每一行转换为字符串,并用换行符连接
main()

自定义func(N, i, A) 函数:

  • i 是当前层的左边界,r 是右边界。

    通过一个循环,将当前层的四个位置的颜色值进行交换,实现旋转。

  • 逻辑如下:

    A[i][j](左上)交换到 A[j][r](右上)

    A[j][r]交换到 A[r][N-1-j](右下)

    A[r][N-1-j]交换到 A[N-1-j][i](左下)

    A[N-1-j][i]交换到 A[i][j](左上)

最后进行复杂度分析:

每一层的旋转操作是 O(N/2),因为每层的旋转交换只涉及该层的元素。

++# 祝大家ACCCCCCCCC++*

相关推荐
deephub8 分钟前
为什么标准化要用均值0和方差1?
人工智能·python·机器学习·标准化
hnxaoli13 分钟前
win10程序(十五)归档文件的xlsx目录自动分卷
python
喵手23 分钟前
Python爬虫零基础入门【第九章:实战项目教学·第8节】限速器进阶:令牌桶 + 动态降速(429/5xx)!
爬虫·python·令牌桶·python爬虫工程化实战·python爬虫零基础入门·限速器·动态降速
深度学习lover27 分钟前
<项目代码>yolo毛毛虫识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·毛毛虫识别
喵手28 分钟前
Python爬虫零基础入门【第九章:实战项目教学·第3节】通用清洗工具包:日期/金额/单位/空值(可复用)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·通用清洗工具包·爬虫实战项目
b20772128 分钟前
Flutter for OpenHarmony 身体健康状况记录App实战 - 体重趋势实现
python·flutter·harmonyos
喵手32 分钟前
Python爬虫零基础入门【第九章:实战项目教学·第4节】质量报告自动生成:缺失率/重复率/异常值 TopN!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·实战项目教学·质量报告自动生成
b20772133 分钟前
Flutter for OpenHarmony 身体健康状况记录App实战 - 个人中心实现
android·java·python·flutter·harmonyos
喵手34 分钟前
Python爬虫零基础入门【第九章:实战项目教学·第7节】增量采集:last_time / last_id 两种策略各做一遍!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·增量采集·策略采集
子午1 小时前
【2026计算机毕设】水果识别分类系统~python+深度学习+人工智能+算法模型+TensorFlow
人工智能·python·深度学习