八皇后问题代码

八皇后类

public class QueenE {
    private int[] ints;
    private int Maxsize;

    public void  put(int n)
    {
        if (n==Maxsize){
            show(ints);
            return;
        }
        for (int i = 0; i <Maxsize ; i++) {  //结合栈的生成弹出机制来理解回溯过程   在这个函数中即使尾部没有return语句,函数体遍历完毕后自动结束
               ints[n]=i;                   //然后回到上一层的for函数(某个函数结束后就回到调用这个函数的初始地),相当于回溯过程
               if (judge(n)){
                   put(n+1);      //先判断当前所放置的棋子是否与其它棋子冲突,这里是不冲突所以可以继续放(递归)
               }
        }
    }

    public boolean judge(int n)
    {
        for (int i = 0; i <n ; i++) {
            if (ints[n]==ints[i]||(n-i)==Math.abs(ints[n]-ints[i]))
            {
                return false;
            }
        }
        return true;
    }
    public QueenE(int maxsize) {
        Maxsize = maxsize;
        ints=new int[maxsize];
    }
    public void show(int[] ints)
    {
        for (int i = 0; i <ints.length ; i++) {
            System.out.print(ints[i]+" ");
        }
        System.out.println();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值