本帖最后由 过午不食 于 2014-1-7 19:20 编辑
说明:
就是一个3阶幻方。
a,b,c
x,y,z
o,p,q
要求,从1-9选择不同的数,每一横行的和等于15,每一竖行的和等于15,斜着的和也等于15.
我的方法很简单,就是9个变量,都是从1-9循环,就是很多循环的嵌套。然后把9个变量互不相同的结果输出。
请大家看我的代码哪里不对。先不管代码是不是很麻烦。
代码如下:
class shudu
{
public static void main(String[] args)
{
int a,b,c,x,y,z,o,p,q;
for (a=1;a<=9 ;a++)
{
for (b=1;b<=9 ;b++)
{
for (c=1;c<=9 ;c++)
{
for (x=1;x<=9 ;x++)
{
for (y=1;y<=9 ;y++)
{
for (z=1;z<=9 ;z++)
{
for (o=1;o<=9 ;o++ )
{
for (p=1;p<=9 ;p++ )
{
for (q=1;q<=9 ;q++)
{
if (a+b+c==15&&x+y+x==15&&b+y+p==15&&a+x+o==15&&c+z+q==15)//&&a+x+o==15&&b+y+p==15&&c+z+q==15&&a+b+c+x+y+z+o+p+q==45)
{
int[] arr={a,b,c,x,y,z,o,p,q};
if (liangliangbutong(arr)==1)
{
System.out.println(a+","+b+","+c+"\n"+x+","+y+","+z+"\n"+o+","+p+","+q+"\n");
}
}
}
}
}
}
}
}
}
}
}
}
//建立一个函数,判读几个数是不是两两不同。两两不同就返回1,否则返回-1
public static int liangliangbutong(int arr[])
{
int x,y;
for (x=0;x<8;x++ )
{
for (y=x+1;y<9 ;y++ )
{
if (arr[x]==arr[y])
{
return -1;
}
}
}
return 1;
}
}
|
|