3*3格列与行和为15的问题,为什么第二个方法不能正常运行
/**
* 和为15的棋盘游戏,要求从1到9的九个数不重复填入3*3棋盘的方格中。各行各列及对角线和为15,
* @author 刘焕濠
*
*/
public class GridGame {
int[][] array;
int count=1;
public GridGame()
{
System.out.println("调用了构造函数");
array=new int;
}
public void showGrid()
{
//System.out.println("调用了打印函数");
int i,j;
for(i=0;i<array.length;i++)
{
for(j=0;j<array.length;j++)
{
System.out.print(array+" ");
}
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.length;j++)
k=k+array;
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.length;j++)
k+=array;
if(k!=15)
return false;
}
return true;
}
private boolean dataCheck()
{
if(!datachecksumrow())
return false;
if(!datachecksumcolumn())
return false;
if(array+array+array!=15)
return false;
if(array+array+array!=15)
return false;
return true;
}
//*********************************************************8
/*privateboolean dataCheck()
{
//System.out.println("调用了检查函数");
int i,j,k=0;
for(i=0;i<array.length;i++)
{
for(j=0;j<array.length;j++)
k+=array;
//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;
if(k!=15)
{
return(false);
}
}
if(array+array+array!=15)
return false;
if(array+array+array!=15)
return false;
if(array+array+array!=15)
return false;
if(array+array+array!=15)
return false;
if(array+array+array!=15)
return false;
if(array+array+array!=15)
return false;
if((array+array+array)!=15)
return(false);
if((array+array+array)!=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=i;
array=j;
array=k;
array=l;
array=m;
array=n;
array=o;
array=p;
array=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("程序结束");
}
}
{:10_249:}看你写的那么多层循环我都怕了 O(n^8)的算法 y=lnX 发表于 2016-9-7 09:49
看你写的那么多层循环我都怕了 O(n^8)的算法
{:5_91:}
页:
[1]