| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 
/** 
 * 和为15的棋盘游戏,要求从1到9的九个数不重复填入3*3棋盘的方格中。各行各列及对角线和为15, 
 * @author 刘焕濠 
 * 
 */ 
public class GridGame { 
         
        int[][] array; 
        int count=1; 
        public GridGame() 
        { 
                System.out.println("调用了构造函数"); 
                array=new int[3][3]; 
        } 
        public void showGrid() 
        { 
                //System.out.println("调用了打印函数"); 
                int i,j; 
                for(i=0;i<array.length;i++) 
                { 
                        for(j=0;j<array[i].length;j++) 
                        { 
                                System.out.print(array[i][j]+" "); 
                        } 
                        System.out.println(); 
                } 
                System.out.println(); 
        } 
        //*********************************************************** 
         
         /** quetion:同样的实现原理,为什么用了for循环就执行错误? 
         *  
         *  
         * */ 
        private boolean datachecksumrow() 
         { 
         int i,j,k=0; 
         for(i=0;i<array.length;i++) 
         { 
         for(j=0;j<array[i].length;j++) 
         k=k+array[i][j]; 
         if(k!=15) 
         return false; 
         } 
         return true; 
         } 
         private boolean datachecksumcolumn() 
         { 
         int i,j,k=0; 
         for(i=0;i<array.length;i++) 
         { 
         for(j=0;j<array[i].length;j++)  
         k+=array[j][i]; 
         if(k!=15) 
         return false; 
         } 
         return true; 
         } 
         private boolean dataCheck() 
         { 
         if(!datachecksumrow()) 
         return false; 
         if(!datachecksumcolumn()) 
         return false; 
         if(array[0][0]+array[1][1]+array[2][2]!=15) 
         return false; 
         if(array[0][2]+array[1][1]+array[2][0]!=15) 
         return false; 
         return true; 
         } 
        //*********************************************************8 
        /*private  boolean dataCheck() 
        { 
                //System.out.println("调用了检查函数"); 
                int i,j,k=0; 
                for(i=0;i<array.length;i++) 
                { 
                         
                        for(j=0;j<array[i].length;j++) 
                        k+=array[i][j]; 
                        //System.out.println("k="+k); 
                        if(k!=15) 
                                return(false); 
                } 
                 
                for(k=0,i=0;i<3;i++) 
                { 
                        for(j=0;j<3;j++) 
                        k+=array[j][i]; 
                        if(k!=15) 
                        { 
                                return(false); 
                        } 
                } 
                     if(array[0][0]+array[0][1]+array[0][2]!=15) 
                         return false; 
                         if(array[1][0]+array[1][1]+array[1][2]!=15) 
                         return false; 
                         if(array[2][0]+array[2][1]+array[2][2]!=15) 
                         return false; 
 
                         if(array[0][0]+array[1][0]+array[2][0]!=15) 
                         return false; 
                         if(array[0][1]+array[1][1]+array[2][1]!=15) 
                         return false; 
                         if(array[0][2]+array[1][2]+array[2][2]!=15) 
                         return false; 
                if((array[0][0]+array[1][1]+array[2][2])!=15) 
                        return(false); 
                if((array[0][2]+array[1][1]+array[2][0])!=15) 
                        return(false); 
                return(true); 
        }*/ 
        public void arrage() 
        { 
                System.out.println("调用了穷举函数"); 
                int sum=1; 
                for(int i=1;i<=9;i++) 
                { 
                        for(int j=1;j<=9;j++) 
                        { 
                                if(i==j) 
                                        continue; 
                                for(int k=1;k<=9;k++) 
                                { 
//                                        System.out.println("函数到达k这里"); 
                                        if(k==j||k==i) 
                                                continue; 
                                        for(int l=1;l<=9;l++) 
                                        { 
                                                if(l==k||l==j||l==i) 
                                                        continue; 
                                                for(int m=1;m<=9;m++) 
                                                { 
                                                        //System.out.println("函数到达k这里"); 
                                                        if(m==k||m==j||m==l||m==i) 
                                                                continue; 
                                                        for(int n=1;n<=9;n++) 
                                                        { 
                                                                if(n==k||n==m||n==j||n==l||n==i) 
                                                                        continue; 
                                                                for(int o=1;o<=9;o++) 
                                                                { 
                                                                        //System.out.println("函数到达o这里"); 
                                                                        if(o==n||o==m||o==j||o==i||o==l||o==k) 
                                                                                continue; 
                                                                        for(int p=1;p<=9;p++) 
                                                                        {         
                                                                                //System.out.println("函数到达p这里"); 
                                                                                if(p==n||p==m||p==j||p==i||p==l||p==k||p==o) 
                                                                                        continue; 
                                                                                for(int q=1;q<=9;q++) 
                                                                                { 
                                                                                        if(q==n||q==m||q==j||q==l||q==i||q==k||q==o||q==p) 
                                                                                                continue; 
                                                                                        array[0][0]=i; 
                                                                                        array[0][1]=j; 
                                                                                        array[0][2]=k; 
                                                                                        array[1][0]=l; 
                                                                                        array[1][1]=m; 
                                                                                        array[1][2]=n; 
                                                                                        array[2][0]=o; 
                                                                                        array[2][1]=p; 
                                                                                        array[2][2]=q; 
                                                                                        //System.out.println("布局结束"); 
                                                                                        //showGrid(); 
                                                                                        if(dataCheck()) 
                                                                                        { 
                                                                                                System.out.println("匹配成功"); 
                                                                                                System.out.println("=="+sum+"=="); 
                                                                                                sum++; 
                                                                                                showGrid(); 
                                                                                        } 
                                                                                } 
                                                                        } 
                                                                } 
                                                        } 
                                                } 
                                        } 
                                } 
                        } 
                } 
        } 
        public static void main(String[] args) 
        { 
                GridGame game=new GridGame(); 
                game.arrage(); 
                System.out.println("程序结束"); 
        } 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |   
 
 
 
 |