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

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

【问题描述】
        小蓝拥有 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)


http://www.ppmy.cn/news/1531823.html

相关文章

C语言编写一个五子棋游戏-代码实例讲解与分析

编写一个完整的五子棋游戏(Gomoku 或 Gobang)在C语言中是一个相对复杂的任务,因为它涉及到用户界面的处理、游戏逻辑的维护以及可能的AI对手设计。在这里,我将提供一个简化的版本,这个版本将使用控制台来接收用户输入&…

【C语言】链接动态链接库时提示符号在链接时未能找到的一个解决

在你描述的场景中,出现 undefined reference to process 和 undefined reference to total_received 的错误是因为这些符号在链接时未能找到。这通常是由于某些文件未被正确添加到构建过程中,或者这些符号的定义和声明不匹配导致的。 你提到 interface.o 和 file.o 被链接生成…

微服务--Docker

Docker是一个开源的应用容器引擎,它基于Go语言并遵从Apache2.0协议开源。Docker提供了一种轻量级、可移植和自包含的容器化环境,使开发人员能够在不同的计算机上以一致的方式构建、打包和分发应用程序。 一、Docker的基本概念 容器(Contain…

指针变量作为函数参数

int main() {char* LPFileBuffer NULL;//接收堆区的指针变量const char* m_fileName "E:\\c\\windowspad.exe";//一个char*的指针变量if (!ReadExeFile(m_fileName, LPFileBuffer)){return -1;}} //接收两个char*变量 OOL ReadExeFile(__in const char* m_fileName…

深入解析JVM中的字符串常量池(StringTable)

目录 字符串常量池概述字符串的不可变性字符串常量池的工作原理JDK版本对StringTable的优化字符串常量池在内存中的位置手动管理字符串常量池字符串常量池的常见问题字符串常量池的调优建议总结 字符串常量池概述 什么是字符串常量池? 字符串常量池是JVM为优化字…

k8s删除和添加node节点

一、删除node节点 1.首先生成token kubeadm create token --print-join-command 保存打印出的信息,默认有效期为24h kubeadm token list 查看token 2.排空node节点上运行的pod kubectl drain node1 --delete-local-data --force --ignore-daemonsets 3.删除…

(undone) MIT6.824 Lecture1 笔记

参考1MIT课程视频:https://www.bilibili.com/video/BV16f4y1z7kn/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考2某大佬笔记:https://ashiamd.github.io/docsify-notes/#/study/%E5%88%86%E5%B8%83%…

SQL:如果字段需要排除某个值但又有空值时,不能直接用“<>”或not in

在 SQL 中&#xff0c;如果字段需要排除某个值但又有空值存在时&#xff0c;不能直接使用“<>”&#xff08;不等于&#xff09;或 NOT IN&#xff0c;是因为这些操作会把空值也考虑进去&#xff0c;但通常情况下可能并不希望空值被这样处理。 以下是一些解决方法&#…