用java写布尔矩阵奇偶性

题目描述

一个布尔矩阵有一种奇偶性,即该矩阵所有行和所有列的和都是偶数。下面这4×4的矩阵就具有奇偶性: 
1 0 1 0 
0 0 0 0 
1 1 1 1 
0 1 0 1 
它所有行的和是2,0,4,2。它所有列的和是2,2,2,2。
现请你编写一个程序,读入这个矩阵并检查它是否具有奇偶性。如果没有,你的程序应当再检查一下它是否可以通过修改一位(把0修改为1,把1修改为0)来使它具有奇偶性。如果不可能,这个矩阵就被认为是破坏了。

输入

输入包含多组测试数据。每组测试数据的第一行是一个整数n(1<=n<=100),代表该矩阵的大小。在接下来的行中,每行有n个整数。矩阵是由0或1构成的。n=0时,输入结束。

输出

对于每组输入,如果这个矩阵具有奇偶性,则输出“OK”。如果奇偶性能通过只修改该矩阵中的一位来建立,那么输出“Change bit (i,j)”,这里i和j是被修改的这位的行号和列号。否则,输出“Corrupt”。

样例输入

4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
4
1 0 1 0
0 0 1 0
1 1 1 1
0 1 0 1
4
1 0 1 0
0 1 1 0
1 1 1 1
0 1 0 1
0

样例输出

OK
Change bit (2,3)
Corrupt

代码:

import java.util.Scanner;
public class Matrix {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int sum = 0,sum1=0;
        int s1=0,s2=0,x=0,y=0;
        int n = in.nextInt();
         int[][] arr = new int[n][n];
         int[] arr1 = new int[n];
         int[] arr2 = new int[n];
    if (n>=1&&n<=100) {    
         for(int i=0;i<arr.length;i++) {                         //给二维数组赋值
             for (int j = 0; j < arr.length; j++) {
                arr[i][j] =in.nextInt();    
                sum=sum+arr[i][j];                            //累加行的总和
            }
            arr1[i]=sum;                                    //行总和的数组
            sum = 0;
         }
        
        
         for(int i=0;i<arr.length;i++) {
             for (int j = 0; j < arr.length; j++) {
                sum1+=arr[j][i];                       //累加列的总和
            }
             arr2[i]=sum1;                            //列的总和的数组
             sum1 = 0;
         }
        
        
         for (int i = 0; i <arr1.length; i++) {
            if (arr1[i]%2!=0) {
                s1++;
                x=i;                     //记录横坐标
            }
            if (arr2[i]%2!=0) {            //是否加起来为奇数的
                s2++;
                y=i;               //记录纵坐标
            }
        }
        
         if(s1+s2==0) {
             System.out.println("OK");
         }else if(s1==1&&s2==1){
            System.out.println("Change bit ("+(x+1)+","+(y+1)+")");
        }else {
            System.out.println("Corrupt");
        }
    }      
    }

}

提交题目时,错误了,怀疑是内存跟时间超了,大神们有什么解决方法吗,求带

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值