数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称"九宫格"。 一个合法的数独棋盘满足上面的条件,即1-9每个数字在每一行、每一列和每一宫中都只出现一次,而并不要求一定有解。 请判断给出的数独棋盘是否合法。
举例: 有一个数独棋盘如下:
5 3 - - 7 - - - -
6 - - 1 9 5 - - -
- 9 8 - - - - 6 -
8 - - - 6 - - - 3
4 - - 8 - 3 - - 1
7 - - - 2 - - - 6
- 6 - - - - 2 8 -
- - - 4 1 9 - - 5
- - - - 8 - - 7 9
它是一个合法棋盘,输出true。
输入样例
5,3,-,6,-,-,-,9,8 -,7,-,1,9,5,-,-,- -,-,-,-,-,-,-,6,- 8,-,-,4,-,-,7,-,- -,6,-,8,-,3,-,2,- -,-,3,-,-,1,-,-,6 -,6,-,-,-,-,-,-,- -,-,-,4,1,9,-,8,- 2,8,-,-,-,5,-,7,9
5,3,-,6,-,-,-,9,8 -,7,-,1,9,5,-,-,- -,-,-,-,-,-,-,6,- 8,-,-,4,-,-,7,-,- -,6,-,8,-,3,-,2,- -,-,3,-,-,1,-,-,6 -,6,-,-,-,-,-,9,- -,-,-,4,1,9,-,8,- 2,8,-,-,-,5,-,7,9
输出样例
ture
false
我的提交
import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
String line;
while (scan.hasNextLine()) {
line = scan.nextLine().trim();
// please write your code here
String[] nums=line.split(" |,");
int i=0;
int j=0;
boolean isvalid=true;
for (i=0;i<9;i++)
{
String aline="";
for(j=0;j<9;j++)
{
if (!(nums[i*9+j].equals("-")))
{
aline = aline.concat(nums[i*9+j]);
}
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
// isvalid = false;
}
continue;
}
}
}
for(i=0;i<9;i=i+3)
{
String aline="";
if(!(nums[i].equals("-")))
{
aline=aline.concat(nums[i]);
}
if(!(nums[i+1].equals("-")))
{
aline= aline.concat(nums[i+1]);
}
if(!(nums[i+2].equals("-")))
{
aline=aline.concat(nums[i+2]);
}
if(!(nums[i+9].equals("-")))
{
aline= aline.concat(nums[i+9]);
}
if(!(nums[i+10].equals("-")))
{
aline=aline.concat(nums[i+10]);
}
if(!(nums[i+11].equals("-")))
{
aline= aline.concat(nums[i+11]);
}
if(!(nums[i+18].equals("-")))
{
aline= aline.concat(nums[i+18]);
}
if(!(nums[i+19].equals("-")))
{
aline= aline.concat(nums[i+19]);
}
if(!(nums[i+20].equals("-")))
{
aline= aline.concat(nums[i+20]);
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
isvalid = false;
}
continue;
}
}
}
for(i=27;i<36;i=i+3)
{
String aline="";
if(!(nums[i].equals("-")))
{
aline=aline.concat(nums[i]);
}
if(!(nums[i+1].equals("-")))
{
aline= aline.concat(nums[i+1]);
}
if(!(nums[i+2].equals("-")))
{
aline=aline.concat(nums[i+2]);
}
if(!(nums[i+9].equals("-")))
{
aline= aline.concat(nums[i+9]);
}
if(!(nums[i+10].equals("-")))
{
aline=aline.concat(nums[i+10]);
}
if(!(nums[i+11].equals("-")))
{
aline= aline.concat(nums[i+11]);
}
if(!(nums[i+18].equals("-")))
{
aline= aline.concat(nums[i+18]);
}
if(!(nums[i+19].equals("-")))
{
aline= aline.concat(nums[i+19]);
}
if(!(nums[i+20].equals("-")))
{
aline= aline.concat(nums[i+20]);
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
isvalid = false;
}
continue;
}
}
}
for(i=54;i<63;i=i+3)
{
String aline="";
if(!(nums[i].equals("-")))
{
aline=aline.concat(nums[i]);
}
if(!(nums[i+1].equals("-")))
{
aline= aline.concat(nums[i+1]);
}
if(!(nums[i+2].equals("-")))
{
aline=aline.concat(nums[i+2]);
}
if(!(nums[i+9].equals("-")))
{
aline= aline.concat(nums[i+9]);
}
if(!(nums[i+10].equals("-")))
{
aline=aline.concat(nums[i+10]);
}
if(!(nums[i+11].equals("-")))
{
aline= aline.concat(nums[i+11]);
}
if(!(nums[i+18].equals("-")))
{
aline= aline.concat(nums[i+18]);
}
if(!(nums[i+19].equals("-")))
{
aline= aline.concat(nums[i+19]);
}
if(!(nums[i+20].equals("-")))
{
aline= aline.concat(nums[i+20]);
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
isvalid = false;
}
continue;
}
}
}
for(i=0;i<3;i++)
{
String aline="";
if(!(nums[i].equals("-")))
{
aline= aline.concat(nums[i]);
}
if(!(nums[i+3].equals("-")))
{
aline= aline.concat(nums[i+3]);
}
if(!(nums[i+6].equals("-")))
{
aline= aline.concat(nums[i+6]);
}
if(!(nums[i+27].equals("-")))
{
aline= aline.concat(nums[i+27]);
}
if(!(nums[i+30].equals("-")))
{
aline= aline.concat(nums[i+30]);
}
if(!(nums[i+33].equals("-")))
{
aline= aline.concat(nums[i+33]);
}
if(!(nums[i+54].equals("-")))
{
aline= aline.concat(nums[i+54]);
}
if(!(nums[i+57].equals("-")))
{
aline= aline.concat(nums[i+57]);
}
if(!(nums[i+60].equals("-")))
{
aline= aline.concat(nums[i+60]);
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
isvalid = false;
}
continue;
}
}
}
for(i=9;i<12;i++)
{
String aline="";
if(!(nums[i].equals("-")))
{
aline= aline.concat(nums[i]);
}
if(!(nums[i+3].equals("-")))
{
aline= aline.concat(nums[i+3]);
}
if(!(nums[i+6].equals("-")))
{
aline= aline.concat(nums[i+6]);
}
if(!(nums[i+27].equals("-")))
{
aline= aline.concat(nums[i+27]);
}
if(!(nums[i+30].equals("-")))
{
aline= aline.concat(nums[i+30]);
}
if(!(nums[i+33].equals("-")))
{
aline= aline.concat(nums[i+33]);
}
if(!(nums[i+54].equals("-")))
{
aline= aline.concat(nums[i+54]);
}
if(!(nums[i+57].equals("-")))
{
aline= aline.concat(nums[i+57]);
}
if(!(nums[i+60].equals("-")))
{
aline= aline.concat(nums[i+60]);
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
isvalid = false;
}
continue;
}
}
}
for(i=18;i<21;i++)
{
String aline="";
if(!(nums[i].equals("-")))
{
aline= aline.concat(nums[i]);
}
if(!(nums[i+3].equals("-")))
{
aline= aline.concat(nums[i+3]);
}
if(!(nums[i+6].equals("-")))
{
aline= aline.concat(nums[i+6]);
}
if(!(nums[i+27].equals("-")))
{
aline= aline.concat(nums[i+27]);
}
if(!(nums[i+30].equals("-")))
{
aline= aline.concat(nums[i+30]);
}
if(!(nums[i+33].equals("-")))
{
aline= aline.concat(nums[i+33]);
}
if(!(nums[i+54].equals("-")))
{
aline= aline.concat(nums[i+54]);
}
if(!(nums[i+57].equals("-")))
{
aline= aline.concat(nums[i+57]);
}
if(!(nums[i+60].equals("-")))
{
aline= aline.concat(nums[i+60]);
}
for (int p = 0; p < aline.length(); p++) {
for (int q = p + 1; q < aline.length(); q++) {
int one = aline.charAt(p);
int two = aline.charAt(q);
if (one == two) {
isvalid = false;
}
continue;
}
}
}
System.out.println(isvalid);
}
}
}