第十四届蓝桥杯真题Python c组F.棋盘(持续更新)

  • 博客主页:音符犹如代码
  • 系列专栏:蓝桥杯
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

【问题描述】

小蓝拥有 n × n 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了m次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)。请输出所有操作做完后棋盘上每个棋子的颜色。

【输入格式】

输入的第一行包含两个整数n,m,用一个空格分隔,表示棋盘大小与操作数。

接下来m行每行包含四个整数 X1,Y1,X2,Y2,相邻整数之间使用一个空格分隔,表示将在X1至X2行和Y1至Y2列中的棋子颜色取反。

【输出格式】

输出n行,每行n个0或1表示该位置棋子的颜色。如果是白色则输出0,否则输出1。

【样例输入】

3 3

1 1 2 2

2 2 3 3

1 1 3 3

【样例输出】

001

010

100

python 复制代码
def flip_chessboard(n, m, operations):  
    # 初始化一个(n+2) x (n+2)的二维数组pre,用于存储前缀和  
    # 多出的两行和两列是为了方便处理边界情况,避免在计算前缀和时越界  
    pre = [[0] * (n + 2) for _ in range(n + 2)]  
  
    # 处理每个操作,更新前缀和数组pre  
    for x1, y1, x2, y2 in operations:  
        # 在(x1, y1)位置增加1,表示开始翻转  
        pre[x1][y1] += 1  
        # 在(x1, y2+1)位置减去1,表示在y2之后不再翻转  
        pre[x1][y2 + 1] -= 1  
        # 在(x2+1, y1)位置减去1,表示在x2之后不再翻转  
        pre[x2 + 1][y1] -= 1  
        # 在(x2+1, y2+1)位置增加1,这是为了抵消之前的减法,确保其他区域不受影响  
        pre[x2 + 1][y2 + 1] += 1  
  
    # 初始化最终棋盘状态ans,并根据前缀和计算每个位置的实际翻转次数  
    ans = [[0] * n for _ in range(n)]  
    for i in range(1, n + 1):  
        for j in range(1, n + 1):  
            # 计算当前位置的前缀和  
            pre[i][j] += pre[i - 1][j] + pre[i][j - 1] - pre[i - 1][j - 1]  
            # 根据前缀和的奇偶性确定棋子的颜色  
            ans[i - 1][j - 1] = 1 if pre[i][j] % 2 != 0 else 0  
  
    # 输出棋盘状态  
    for row in ans:  
        print(''.join(str(cell) for cell in row))  
  
# 输入处理  
if __name__ == "__main__":  
    # 从标准输入读取n和m  
    n, m = map(int, input().split())  
    # 读取所有操作,并存储在operations列表中  
    operations = [tuple(map(int, input().split())) for _ in range(m)]  
    # 调用函数翻转棋盘并输出结果  
    flip_chessboard(n, m, operations)
相关推荐
测试199816 分钟前
Selenium自动化测试+OCR-获取图片页面小说详解
自动化测试·软件测试·python·selenium·测试工具·ocr·测试用例
闲人编程18 分钟前
使用MLflow跟踪和管理你的机器学习实验
开发语言·人工智能·python·机器学习·ml·codecapsule
panplan.top22 分钟前
Tornado + Motor 微服务架构(Docker + 测试 + Kubernetes)
linux·python·docker·微服务·k8s·tornado
看兵马俑的程序员25 分钟前
RAG实现-本地PDF内容加载和切片
开发语言·python·pdf
是梦终空2 小时前
计算机毕业设计240—基于python+爬虫+html的微博舆情数据可视化系统(源代码+数据库)
爬虫·python·pandas·课程设计·毕业论文·计算机毕业设计·微博舆情可视化
CodeJourney.2 小时前
Python开发可视化音乐播放器教程(附代码)
数据库·人工智能·python
爱学习的小鱼gogo2 小时前
pyhton 螺旋矩阵(指针-矩阵-中等)含源码(二十六)
python·算法·矩阵·指针·经验·二维数组·逆序
言之。3 小时前
Andrej Karpathy 演讲【PyTorch at Tesla】
人工智能·pytorch·python
赵谨言3 小时前
基于Python楼王争霸劳动竞赛数据处理分析
大数据·开发语言·经验分享·python
智启七月4 小时前
谷歌 Gemini 3.0 正式发布:一键生成 Web OS,编程能力碾压竞品
人工智能·python