我一个朋友闲着没事,全用for写了一个,我没那个闲心,贴上来让大家笑笑!
void EightQueen()
{
   for(int n1=1;n1<9;n1++){
      for(int n2=1;n2<9;n2++){
if(n2==n1-1|n2==n1|n2==n1+1) continue;
  for(int n3=1;n3<9;n3++){
     if(n3==n1-2|n3==n1|n3==n1+2|n3==n2-1|n3==n2|n3==n2+1) continue;
for(int n4=1;n4<9;n4++){
 if(n4==n1-3|n4==n1|n4==n1+3|n4==n2-2|n4==n2|n4==n2+2|n4==n3-1|n4==n3|n4==n3+1) continue;
    for(int n5=1;n5<9;n5++){
if(n5==n1-4|n5==n1|n5==n1+4|n5==n2-3|n5==n2|n5==n2+3|n5==n3-2|n5==n3|n5==n3+2|n5==n4-1|n5==n4|n5==n4+1) continue;
for(int n6=1;n6<9;n6++){
  if(n6==n1-5|n6==n1|n6==n1+5|n6==n2-4|n6==n2|n6==n2+4|n6==n3-3|n6==n3|n6==n3+3|n6==n4-2|n6==n4|n6==n4+2|n6==n5-1|n6==n5|n6==n5+1) continue;
    for(int n7=1;n7<9;n7++){
if(n7==n1-6|n7==n1|n7==n1+6|n7==n2-5|n7==n2|n7==n2+5|n7==n3-4|n7==n3|n7==n3+4|n7==n4-3|n7==n4|n7==n4+3|n7==n5-2|n7==n5|n7==n5+2|n7==n6-1|n7==n6|n7==n6+1) continue;
int n8 = 36-n1-n2-n3-n4-n5-n6-n7;
System.out.println("1排"+n1+"列 "+"2排"+n2+"列 "+"3排"+n3+"列 "+"4排"+n4+"列 "+"5排"+n5+"列 "+"6排"+n6+"列 "+"7排"+n7+"列 "+"8排"+n8+"列");
                                                            }
}
}
}
}
}
}

解决方案 »

  1.   

    靠这么麻烦啊,我当时上程序设计方法学的时候,用pascal编过,也没这么麻烦啊,不过我现在都忘了具体算法了
      

  2.   

    public class EightQuare 
    {
      public static int [] x = new int [50];
      public static boolean [] a = new boolean [50];
      public static boolean [] b = new boolean [50];
      public static boolean [] c = new boolean [50];  public static void PrintOut()
      {
        for(int h = 8; h <= 15;h++)
        System.out.println(x[h]);
      }  public static void Generate (int n)
      {
        for(int h = 0;h <=7; h++)
        {
          if (a[h] && b[n - h] && c[n + h])
          {
            x[n] = h;
            a[h] = false;
            b[n - h] = false;
            c[n + h] = false;
            c[n + h] = false;
            if (n < 15)
              Generate (n + 1);
            else
              PrintOut();
            a[h] = true;
            b[n - h] = true;
            c[n + h] = true;
          }
        }
      }  public static void main(String[] args)
      {
        int n = 8;
        for(int h = 0;h <=15;h++) a[h] = true;
        for(int h = 0;h <=15;h++) b[h] = true;
        for(int h = 0;h <=22;h++) c[h] = true;
        Generate(n);
        System.exit(0);
      }
    }这是我以前编写的程序,你看看吧
      

  3.   

    没上面那位老兄用for那么可怕,时间复杂度要小很多啊