问题描述
小蓝拥有 n xn 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)请输出所有操作做完后棋盘上每个棋子的颜色。
输入格式
输入的第一行包含两个整数 n,m,用一个空格分隔,表示棋盘大小与操作数。
接下来 m 行每行包含四个整数 x1,y1,x2,y2,相邻整数之间使用一个空格分隔,表示将在x1至 x2 行和 y1至 y2 列中的棋子颜色取反。
输出格式
输出几行,每行几个0或1表示该位置棋子的颜色。如果是白色则输出 0,否则输出 1。
实现代码:
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); //可输出多个参数,不换行}