Algorithm 版 (精华区)

发信人: sino (茶水博士), 信区: Theory
标  题: 八皇后问题的Java程序
发信站: 哈工大紫丁香 (Sun Aug 27 13:26:30 2000), 转信

发信人: acat.bbs@bbs.rjgc.whu.edu.cn (喵), 信区: algorithm
发信站: 珞珈山水 (Fri May 16 10:36:43 1997)
转信站: ACE!ustcnews!rjgcnews!rjgcbbs

// 火火试一下这个程序的速度如何?
// 程序中 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);
  }
}
--
 /\___/\
( o   o )
(  =^=  )
(        )
(         )
(          )))))))))))

--
※ 修改:.fib 於 Aug 27 13:24:11 修改本文.[FROM: bbs.hit.edu.cn]
--
※ 转寄:.南京大学小百合 bbs.nju.edu.cn.[FROM: bbs.hit.edu.cn]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: fib.bbs@bbs.nju.edu.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.138毫秒