A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 过午不食 中级黑马   /  2014-1-7 18:58  /  840 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 过午不食 于 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;
}
}

3阶.jpg (13.14 KB, 下载次数: 6)

结果

结果

三阶2.JPG (75.42 KB, 下载次数: 12)

代码

代码

2 个回复

倒序浏览
本帖最后由 过午不食 于 2014-1-7 19:17 编辑

就是当我把if里面的条件写上的时候,就会一个结果都找不出。或者就是找到的结果根本就不符合条件。
回复 使用道具 举报
我发现了。条件打错了。打成x+y+x==15了。
正确的条件写成。       
                                                                                 if (a+b+c==15&&x+y+z==15&&o+p+q==15&&
                                                                                                 a+x+o==15&&b+y+p==15&&c+z+q==15&&
                                                                                                 a+b+c+x+y+z+o+p+q==45&&
                                                                                                 a+y+q==15&&c+y+o==15)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马