Java黑皮书课后题第8章:*8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了

*8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了

  • 题目
    • 题目描述与运行示例
    • 破题
  • 代码

题目

题目描述与运行示例

8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的66矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了
程序应该提示用户输入一个6*6的填满0和1的矩阵,并且找到第一个不符合具有偶数个1的特征的r以及c列(即1的数目不是偶数),则该翻转的单元格位于(r,c)。
下面是一个运行示例:

Enter a 6-by-6 matrix row by row:
1 1 1 0 1 1
1 1 1 1 0 0
0 1 0 1 1 1
1 1 1 1 1 1
0 1 1 1 1 0
1 0 0 0 0 1
The flipped cell is at (0, 1)

破题

  1. 声明1个6*6 int型矩阵
  2. 提示用户输入矩阵元素并使用循环给矩阵赋值
  3. 新建一个计数变量,初值为0
  4. 通过循环遍历矩阵,当元素值为1时计数变量+1
  5. 每轮判断计数变量除2是否有余数,如果有余数则“翻转单元”在这里

代码

import java.util.Scanner;public class Test8_23 {public static void main(String[] args) {//1. 声明1个6*6 int型矩阵int[][] array = new int[6][6];//2. 提示用户输入矩阵元素并使用循环给矩阵赋值Scanner input = new Scanner(System.in);System.out.println("Enter a 6-by-6 matrix row by row:");for (int i = 0 ; i < 6 ; i++){for (int j = 0 ; j < 6 ; j++){array[i][j] = input.nextInt();}}//3. 新建一个计数变量,初值为0int count = 0;int[] location = new int[2];//4. 通过循环遍历矩阵,当元素值为1时计数变量+1//5. 每轮判断计数变量除2是否有余数,如果有余数则“翻转单元”在这里for (int i = 0 ; i < 6 ; i++){count = 0;for (int j = 0 ; j < 6 ; j++){if (array[i][j] == 1){++count;}}if ( count % 2 == 1){location[0] = i;break;}}for (int j = 0 ; j < 6 ; j++){count = 0;for (int i = 0 ; i < 6 ; i++){if (array[i][j] == 1){++count;}}if ( count % 2 == 1){location[1] = j;break;}}// 输出结果System.out.println("The flipped cell is at (" + location[0] + ", " + location[1] + ")");}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部