用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");
?? ??? ?}
?? ?}? ????
?? ?}
}
提交題目時,錯誤了,懷疑是內存跟時間超了,大神們有什么解決方法嗎,求帶
總結
以上是生活随笔為你收集整理的用java写布尔矩阵奇偶性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数学之美】豆瓣9.1 颠覆世界的混沌理
- 下一篇: 如何“杀”趋势杀毒网络版