安顺住房和城乡建设部网站,网站被黑后怎么补救,wordpress 主页空白,专业刷单网站建设题目 小蓝拥有 nn 大小的棋盘#xff0c;一开始棋盘上全都是白子。
小蓝进行了 m 次操作#xff0c;每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色#xff0c;黑色棋子变为白色)。
请输出所有操作做完后棋盘上每个棋子的颜色。
输入格式
输…题目 小蓝拥有 n×n 大小的棋盘一开始棋盘上全都是白子。
小蓝进行了 m 次操作每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色黑色棋子变为白色)。
请输出所有操作做完后棋盘上每个棋子的颜色。
输入格式
输入的第一行包含两个整数 n,m用一个空格分隔表示棋盘大小与操作数。
接下来 m 行每行包含四个整数 x1,y1,x2,y2相邻整数之间使用一个空格分隔表示将在 x1 至 x2 行和 y1 至 y2列中的棋子颜色取反。
输出格式
输出 n 行每行 n 个 00 或 11 表示该位置棋子的颜色。
如果是白色则输出 00否则输出 11。
数据范围
对于 30%30% 的评测用例1≤n,m≤500 对于所有评测用例1≤n,m≤20001≤x1≤x2≤n1≤y1≤y2≤n。
输入样例
3 3
1 1 2 2
2 2 3 3
1 1 3 3输出样例
001
010
100难度简单时/空限制2s / 64MB 思路和解题方法 定义一个二维数组 b[N][N]大小为 N * N用于记录每个位置上数字的变化情况。 输入两个整数 n 和 m分别表示矩阵的大小和操作次数。 进入一个循环循环 m 次每次输入一个矩形的左上角和右下角坐标。 对应矩形区域内的四个顶点进行操作 左上角 (x1, y1)在 b[x1][y1] 上加一。右上角 (x1, y21)在 b[x1][y21] 上减一。左下角 (x21, y1)在 b[x21][y1] 上减一。右下角 (x21, y21)在 b[x21][y21] 上加一。这样就相当于对矩形区域内的所有元素加一并对矩形区域的四个边界进行相应的减法操作。 使用二重循环遍历整个矩阵对每个位置进行更新。对于第 i 行和第 j 列的位置根据二维差分数组的性质可以通过以下公式计算当前位置的值 复制代码 b[i][j] b[i-1][j] b[i][j-1] - b[i-1][j-1] 这样就得到了每个位置上的最终值。 输出最终结果。对于每个位置 (i, j)输出 b[i][j] 的奇偶性即 (b[i][j] 1)。 循环结束程序正常退出。 复杂度 时间复杂度: O(N2) 空间复杂度 O(N2) c 代码
#includebits/stdc.h // 包含常用的 C 标准库using namespace std;const int N 2010; // 定义常量 N 为 2010
int n,m; // 定义变量 n 和 m
int b[N][N]; // 定义二维数组 b大小为 N * Nint main()
{cinnm; // 输入 n 和 mwhile(m--) // 循环 m 次{int x1,y1,x2,y2; // 定义矩形左上角和右下角的坐标cinx1y1x2y2; // 输入矩形的坐标b[x1][y1]; // 对应位置加一b[x1][y21]--; // 对应位置减一b[x21][y1]--; // 对应位置减一b[x21][y21]; // 对应位置加一}for(int i 1;in;i) // 遍历行{for(int j 1;jn;j) // 遍历列{b[i][j] b[i-1][j] b[i][j-1] - b[i-1][j-1]; // 更新当前位置的值cout(b[i][j]1); // 输出当前位置的奇偶性}puts( ); // 换行}return 0; // 程序正常退出
}觉得有用的话可以点点赞支持一下。
如果愿意的话关注一下。会对你有更多的帮助。 每天都会不定时更新哦 人 。