问题描述
答案提交
解题思路
其实就是建立一个二维数组,然后根据输入的左上角和右下角的点确定一个矩形区域,对里面的值进行取反(0和1)。
注意题目的输出格式!!
AC代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 输入棋盘大小和操作次数
int n = scan.nextInt();
int m = scan.nextInt();
// 创建一个二维数组表示棋盘,初始化为0
int[][] chess = new int[n + 1][n + 1];
// 循环进行操作次数
while (m-- > 0) {
// 输入每次操作的起始坐标和结束坐标
int x1 = scan.nextInt();
int y1 = scan.nextInt();
int x2 = scan.nextInt();
int y2 = scan.nextInt();
// 遍历操作范围内的每个格子
for (int i = x1; i <= x2; i++) {
for (int j = y1; j <= y2; j++) {
// 切换格子的状态(0变为1,1变为0)
if (chess[i][j] == 0) {
chess[i][j] = 1;
} else {
chess[i][j] = 0;
}
}
}
}
// 输出最终棋盘状态
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
System.out.print(chess[i][j]);
}
System.out.println(); // 换行表示一行结束
}
}
}
相关知识
二维数组。这道题也可以用前缀和来解决
(by 归忆)