zoukankan      html  css  js  c++  java
  • 八皇后

    理论;

    在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

    解法(回溯法):

    java解法;

    package 经典;
    
    public class EightQueen2{
        public static final int MAX=8;
        public static int num=0;
        public static int[] queen=new int[MAX];
        
        public static void main(String []args){
            EightQueen2 queen=new EightQueen2();
            queen.backTrack(0);
        }
        
        public boolean place(int n){
            
            for(int i=0; i<n; i++)
            {
                if(queen[i]==queen[n] || Math.abs(queen[i]-queen[n])==(n-i))
                    return false;
            }
            return true;
        }
        
        public void backTrack(int n){
        
            for(int i=0; i<MAX; i++)
            {
                queen[n]=i;
                
                if(place(n))
                {
                    if(n==MAX-1)
                        showAnswer();
                    else
                    {
                        backTrack(n+1);
                    }
                }
            }
    
        }
    
        private void showAnswer() {
            // TODO Auto-generated method stub
            ++num;
            System.out.println("解答:"+num);
            
            for(int i=0; i<MAX; i++)
            {
                for(int j=0; j<MAX; j++)
                {
                    if(queen[i]==j)
                        System.out.print("Q");
                    else
                        System.out.print(" . ");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    Deepin Linux下安装安卓应用的各种方式
    win下的终端使用指南
    IDEA自定义TODO
    WSL的ssh-agent问题
    MySQL数据类型
    MySQL常用命令.md
    Period 时间坑
    exp/imp管理
    expdp和impdp管理(逻辑导入导出)
    同义词
  • 原文地址:https://www.cnblogs.com/huangcongcong/p/4006714.html
Copyright © 2011-2022 走看看