问题描述
小蓝拥有 n xn 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)请输出所有操作做完后棋盘上每个棋子的颜色。
输入格式
输入的第一行包含两个整数 n,m,用一个空格分隔,表示棋盘大小与操作数。
接下来 m 行每行包含四个整数 x1,y1,x2,y2,相邻整数之间使用一个空格分隔,表示将在x1至 x2 行和 y1至 y2 列中的棋子颜色取反。
输出格式
输出几行,每行几个0或1表示该位置棋子的颜色。如果是白色则输出 0,否则输出 1。
实现代码:
java
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
boolean[][] qp = new boolean[n][n];
while(m-- > 0) {
int x1=scan.nextInt();
int y1=scan.nextInt();
int x2=scan.nextInt();
int y2=scan.nextInt();
for(int i=x1-1; i<x2; i++) {
for(int j=y1-1; j<y2; j++) {
qp[i][j] = !qp[i][j]; //棋盘落子只有两种状态,这里用false和TRUE替代
}
}
}
for(int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
if(qp[i][j] == true) System.out.print("1");
else System.out.print("0");
}
System.out.println(""); //进行分行操作
}
scan.close();
}
}
蓝桥杯样例输入输出:
idea显示结果:
注意点:print,printf,println的区别
public class com {
public static void main(String[] args) {
int a=9;
String s="nihao";
System.out.print(1); //输出一个参数,但不换行
System.out.print("2");
System.out.println(""); //输出一个参数,换行
System.out.println("3");
System.out.printf("数字是:%d,字符串是:%s",a,s); //可输出多个参数,不换行
}