zoukankan      html  css  js  c++  java
  • 【数据结构与算法】八皇后问题

    https://www.jianshu.com/p/65c8c60b83b8

    public class Main {
    
        public static int[][] arry=new int[8][8];//棋盘,放皇后
        public static int map=0;//存储方案结果数量
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            System.out.println("八皇后问题");
            findQueen(0);
            System.out.println("八皇后问题共有:"+map+"种可能");
        }
    
        public static void findQueen(int i){//寻找皇后节点
            if(i>7){//八皇后的解
                map++;
                print();//打印八皇后的解
                return;
            }
    
            for(int m=0;m<8;m++){//深度回溯,递归算法
                if(check(i,m)){//检查皇后摆放是否合适
                    arry[i][m]=1;
                    findQueen(i+1);
                    arry[i][m]=0;//清零,以免回溯的时候出现脏数据
                }
            }
        }
    
        public static boolean check(int k,int j){//判断节点是否合适
            for(int i=0;i<8;i++){//检查行列冲突
                if(arry[i][j]==1){
                    return false;
                }
            }
            for(int i=k-1,m=j-1; i>=0 && m>=0; i--,m--){//检查左对角线
                if(arry[i][m]==1){
                    return false;
                }
            }
            for(int i=k-1,m=j+1; i>=0 && m<=7; i--,m++){//检查右对角线
                if(arry[i][m]==1){
                    return false;
                }
            }
            return true;
        }
    
        public static void print(){//打印结果
            System.out.print("方案"+map+":"+"
    ");
            for(int i=0;i<8;i++){
                for(int m=0;m<8;m++){
                    if(arry[i][m]==1){
                        //System.out.print("皇后"+(i+1)+"在第"+i+"行,第"+m+"列	");
                        System.out.print("o ");
                    }
                    else{
                        System.out.print("+ ");
                    }
                }
                System.out.println();
            }
            System.out.println();
        }
    }
  • 相关阅读:
    判断一个点是否在一个不规则多边形内算法
    vue-cli 3.0 安装和创建项目流程
    微信小程序分享朋友圈的实现思路与解决办法
    vue2.0中关于active-class
    Nginx服务启动脚本
    Linux系统优化
    URL检测脚本
    Mysql读写分离php脚本
    Memcahed服务异常监控脚本
    一致性哈希算法PHP测试片段
  • 原文地址:https://www.cnblogs.com/ulyssescat/p/10772829.html
Copyright © 2011-2022 走看看