八皇后问题的java程序.txt

来自「八皇后问题的Java程序」· 文本 代码 · 共 67 行

TXT
67
字号
发信人: Tity (云中浪子), 信区: arithmetic 

标  题: 八皇后问题的Java程序 

发信站: 幽幽黄桷兰 (2002年07月08日19:41:44 星期一), 站内信件 

  

// 火火试一下这个程序的速度如何? 

// 程序中 d l r 数组分别表示不可放的纵列和左右斜45度列 

  

class queen 

{ 

  boolean[] d, l, r; 

  int[] q; 

  int count; 

  

  queen (int n) 

  { 

    count = 0; 

    q = new int[n]; 

      d = new boolean[n]; 

      l = new boolean[n + n]; 

      r = new boolean[n + n]; 

      Run (0, n); 

      System.out.print ("Total="); 

      System.out.println (count); 

  } 

  

  void Run (int i, int n) 

  { 

     int k; 

  

    for (k = 0; k < n; k++) 

      { 

        if (d[k] || l[i - k + n] || r[i + k]) 

          continue; 

        d[k] = l[i - k + n] = r[i + k] = true; 

        q[i] = k; 

        if (i == n - 1) 

          count++; 

        else 

          Run (i + 1, n); 

        d[k] = l[i - k + n] = r[i + k] = false; 

      } 

  } 

  

      } 

      } 

  } 

  

  public static void main (String arg[]) 

  { 

    int n; 

  

      n = 8; 

    if (arg.length >= 1) 

        n = Integer.parseInt (arg[0]); 

    new queen (n); 

  } 

} 

-- 

  

-- 

             _ 

   ---------------+--------------- 

             ___ /^^[___              _ 

            /|^+----+   |#___________// 

          ( -+ |____|   _______-----+/ 

           ==_________--'            \ 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?