数独判断快哪里错了啊

        // 判断快//
            int tiao = 0;
            for(int i=tiao;i<9;i+=3) {
                for(int j=0;j<9;j+=3,tiao+=3) {
                    int []kuai=new int [9];
                    int shu =0;
                    for(int n=j;n<j+3;n++) {
                        for(int z=tiao;z<tiao+3;z++,shu++) {
                            kuai[shu]=shuzu[n][z];
                        }
                    }
                    if (panduan(kuai) == 0) {
                        System.out.print("sorry~");
                        break OUT;
                }
            }
            System.out.print("Congrats!");
        }       // 判断快//
            int tiao = 0;
            for(int i=tiao;i<9;i+=3) {
                for(int j=0;j<9;j+=3,tiao+=3) {
                    int []kuai=new int [9];
                    int shu =0;
                    for(int n=j;n<j+3;n++) {
                        for(int z=tiao;z<tiao+3;z++,shu++) {
                            kuai[shu]=shuzu[n][z];
                        }
                    }
                    if (panduan(kuai) == 0) {
                        System.out.print("sorry~");
                        break OUT;
                }
            }
            System.out.print("Congrats!");
        }

4 条评论

  • @ 2019-06-04 20:58:08

    怎么不重要?你明显现在就是这里出的错。

    我只看懂了你的kuai是一个一维数组,你想把每个小块拷进这个数组kuai里面,然后利用函数做判断。是这个思路没错吧?

    具体怎么拷进去的,用的就是你那一大堆让人看不懂的循环变量。肯定就错在那6个变量相关的代码里面。

    • @ 2019-06-04 21:01:37

      对,你说对没毛病,那我得改一下 变量名字了把

  • @ 2019-06-04 20:52:38

    从70行到82行,你的tiaoijshunz分别都是什么意思?变量名起得不好,让人看不懂。

    • @ 2019-06-04 20:54:55

      哪里只是用来循环的。不重要,,主要那个tiao是用来循环一次后把位置跳到从位置三开始,以此类推

  • @ 2019-06-04 20:40:20
    import java.util.Scanner;
    import java.util.Arrays;
    
    /**
     * 数独 0. 1 2 3 4 5 6 7 8 9 1. [1, 2, 3, 4, 5, 6, 7, 8, 9] 2. [1, 2, 3, 4, 5, 6,
     * 7, 8, 9] 3. [1, 2, 3, 4, 5, 6, 7, 8, 9] 4. [1, 2, 3, 4, 5, 6, 7, 8, 9] 5. [1,
     * 2, 3, 4, 5, 6, 7, 8, 9] 6. [1, 2, 3, 4, 5, 6, 7, 8, 9] 7. [1, 2, 3, 4, 5, 6,
     * 7, 8, 9] 8. [1, 2, 3, 4, 5, 6, 7, 8, 9] 9. [1, 2, 3, 4, 5, 6, 7, 8, 9]
     * 
     */
    public class 计算结果 {
        public static int panduan(int[] a) {
            Arrays.sort(a);
            String str = Arrays.toString(a);
            if (str.equals("[1, 2, 3, 4, 5, 6, 7, 8, 9]")) {
                return 1;
            }
    
            else {
                return 0;
    
            }
    
        }
    
        public static void main(String[] args) {
            /**
             * 开始打印数独
             *
             */
    
            Scanner in = new Scanner(System.in);
            OUT: if (true) {
                int[] shudu = new int[9];
                int[][] shuzu = new int[9][9];
                // 读入九个数//
                for (int i = 0; i < 9; i++) {
                    shudu[i] = in.nextInt();
                }
                // 转换成二维数组//
                for (int i = 0; i < 9; i++) {
                    String str = String.valueOf(shudu[i]);
    
                    int[] chang = new int[9];
                    for (int k = 0; k < 9; k++) {
                        chang[k] = Integer.parseInt(String.valueOf(str.charAt(k)));
                    }
                    
                    for (int j = 0; j < 9; j++) {
                        shuzu[i][j] = chang[j];
                    }
                    if (panduan(chang) == 0) {
                        System.out.print("sorry~");
                        break OUT;
                    }
                }
                // panduan列//
                for (int i = 0; i < 9; i++) {
                    int[] lie = new int[9];
                    for (int j = 8; j >-1; j--) {
                        lie[j] = shuzu[i][j];
                    }
                    if (panduan(lie) == 0) {
                        System.out.print("sorry~");
                        break OUT;
                    }
                }
    
                // 判断快//
                int tiao = 0;
                for(int i=tiao;i<9;i+=3) {
                    for(int j=0;j<9;j+=3,tiao+=3) {
                        int []kuai=new int [9];
                        int shu =0;
                        for(int n=j;n<j+3;n++) {
                            for(int z=tiao;z<tiao+3;z++,shu++) {
                                kuai[shu]=shuzu[n][z];
                            }
                        }
                        if (panduan(kuai) == 0) {
                            System.out.print("sorry~");
                            break OUT;
                    }
                }
                System.out.print("Congrats!");
            }
        }
    }
    }
    
    
  • @ 2019-06-04 18:47:48

    请上传你的完整代码。

  • 1