AcWing 703. 数独检查--Java
原题链接
简单
作者:
Jiang锋时刻
,
2021-02-02 20:52:18
,
所有人可见
,
阅读 439
Java 代码
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
int mmc = 1;
while(mmc <= count) {
int n = sc.nextInt();
int[][] arr = new int[n * n][n * n];
for(int i = 0; i < n * n; i++) {
for(int j = 0; j < n * n; j++) {
arr[i][j] = sc.nextInt();
}
}
if(isValid(arr)) {
System.out.println("Case #" + mmc + ": Yes");
} else {
System.out.println("Case #" + mmc + ": No");
}
mmc++;
}
}
public static boolean isValid(int[][] arr) {
int size = arr.length;
int n = (int)Math.sqrt(size);
boolean[][] row = new boolean[size][size + 1];
boolean[][] col = new boolean[size][size + 1];
boolean[][][] box = new boolean[n][n][size + 1];
for(int i = 0; i < size; i++) {
for(int j = 0; j < size; j++) {
int num = arr[i][j];
if(num > size ) {
return false;
}
if(row[i][num] || col[j][num] || box[i / n][j / n][num]) {
return false;
}
row[i][num] = col[j][num] = box[i / n][j / n][num] = true;
}
}
return true;
}
}