八皇后问题代码

这是一个使用Java实现的八皇后问题解决方案。代码中定义了一个EgihtQueue类,通过递归方式放置皇后,并检查当前位置是否合法,避免同一行、同一列及两条对角线上存在多个皇后。最终找到所有可能的解决方案并输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class EgihtQueue {
    int max=8;
    int[] queen=new int[max];
    int count=0;
    boolean[] flag={true,true,true,true,true,true,true,true};//判断该列是否被占领
    boolean[] d1={true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true};//判断主对角线是否被占
    boolean[] d2={true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true};//判断副对角线是否被占

    public static void main(String[] args) {
        EgihtQueue egihtQueue=new EgihtQueue();
        egihtQueue.findqueen(0);
        System.out.println(egihtQueue.count);
    }

    private void print(){
        for(int i=0;i<queen.length;i++){
            System.out.print(queen[i]+"");
        }
        System.out.println();
        count++;
    }
    //放置第n个皇后,测试当前位置是否可以安放

   public  boolean findqueen(int n){
        int col;
        for(col=0;col<8;col++){//每个皇后都有8种可能的列
            if(flag[col]&&d1[n-col+7]&&d2[n+col]){
                queen[n]=col;
                flag[col]=false;
                d1[n-col+7]=false;
                d2[n+col]=false;
                if(n<7) {
                    findqueen(n+1);//当不行时,返回false回溯至此
                }else {
                    print();
                }
                flag[col]=true;
                d1[n-col+7]=true;
                d2[n+col]=true;
            }

        }
        return false;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油光发亮的小猛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值