黑马程序员技术交流社区

标题: 一个做数独题的程序,, 可是当修改数字提升到9字数独 [打印本页]

作者: 何亚辉    时间: 2016-5-13 23:23
标题: 一个做数独题的程序,, 可是当修改数字提升到9字数独
class Sodu {
        public static void main(String[] args){
int a1=2, a3=1,a5=1,a7=2,a9=3,a13=4,a16=2;

for (int a2=1;a2<5 ;a2++ ) {
        for (int a4=1;a4<5 ;a4++ ) {
                for (int a6=1;a6<5 ;a6++ ) {
                        for (int a8=1;a8<5 ;a8++ ) {
                                for (int a10=1;a10<5 ;a10++ ) {
                                        for (int a11=1;a11<5 ;a11++ ) {
                                                for (int a12=1;a12<5 ;a12++ ) {
                                                        for (int a14=1;a14<5 ;a14++ ) {
                                                                for (int a15=1;a15<5 ;a15++ ) {
                                                                        int[] x ={1,2,3,4};
                                                                        int[][] arr = new int[12][4];
                                                                        arr[0]=new int[]{a1,a2,a3,a4};
                                                                        arr[1]=new int[]{a5,a6,a7,a8};
                                                                        arr[2]=new int[]{a9,a10,a11,a12};
                                                                        arr[3]=new int[]{a13,a14,a15,a16};
                                                                        arr[4]=new int[]{a1,a2,a5,a6};
                                                                        arr[5]=new int[]{a3,a4,a7,a8};
                                                                        arr[6]=new int[]{a9,a10,a13,a14};
                                                                        arr[7]=new int[]{a11,a12,a15,a16};
                                                                        arr[8]=new int[]{a1,a5,a9,a13};
                                                                        arr[9]=new int[]{a2,a6,a10,a14};
                                                                        arr[10]=new int[]{a3,a7,a11,a15};
                                                                        arr[11]=new int[]{a4,a8,a12,a16};

                                                                         for (int i =0;i<=11 ;i++ ) {
                                                                                if (tell(arr[i],x)) {
                                                                                        if (i==11) {
                                                                                                for (int s =0;s<=3 ;s++ ) {
                                                                                                        for (int t =0;t<=3 ;t++ ) {
                                                                                                                System.out.print(arr[s][t]+"  ");
                                                                                                        }
                                                                                                        System.out.println("");
                                                                                                }
                                                                                                System.out.println("-----");
                                                                                        }
                                                                                       
                                                                                }
                                                                                else {
                                                                                break ;
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}

        }
public static boolean tell(int[] arr, int[] arr1){
        int sum =0;
        arr1 =new int[]{1,2,3,4};
        for (int i =0;i<=3 ;i++ ) {
        for (int j =0;j<=3 ;j++ ) {
                if (arr[i]==arr1[j]) {
                        sum++;
                        arr1[j]= 10;
                        break;
                }
        }
}
if (sum==4) {
        return true;
}
else {
return false;
}
}



}


作者: 何亚辉    时间: 2016-5-13 23:24
这个程序解决4维的数独的时候挺快,,但是 解决9维数独的时候,,,运算一直得不到结果......我在程序的最末尾加了一个System.out.println("end"); 可是一直得不到输出证明正在运算
作者: 我有上将潘凤    时间: 2016-5-13 23:31
哇,好厉害。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2