八皇后问题的Java程序
源代码在线查看: 八皇后问题的java程序.txt
发信人: 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);
}
}
--
--
_
---------------+---------------
___ /^^[___ _
/|^+----+ |#___________//
( -+ |____| _______-----+/
==_________--' \