package work2;
import java.util.Random;
public class LVQueen {
static Random rnd;
static int n;
static int x[];
private static boolean place(int k)
{
for(int j=1;j<k;j++)
{
if((Math.abs(k-j)==Math.abs(x[k]-x[j]))||(x[j]==x[k])) {
return false;
}
}
return true;
}
private static boolean queensLV()
{
rnd=new Random();
int k=1;
int count=1;
while((k<=n)&&(count>0))
{
count=0;
int j=0;
for(int i=1;i<=n;i++)
{
x[k]=i;
if(place(k))
{
if(rnd.nextInt(++count) == 0) {
j=i;
}
}
}
if(count>0) {
x[k++]=j;
}
}
return (count>0);
}
public static void nQueen()
{
x=new int[n+1];
for(int i=0;i<=n;i++)
{
x[i]=0;
}
while(!queensLV());
for(int i = 1; i <= n; i++)
{
System.out.println("("+i + " , " +x[i]+")" );
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
n=8;
nQueen();
}
}
【无标题】拉斯维加斯算法,N后问题
最新推荐文章于 2024-10-01 18:51:18 发布