【无标题】拉斯维加斯算法,N后问题

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();
		
		

	}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值