zoukankan      html  css  js  c++  java
  • 分治法实现 n皇后问题 Java语言

    package n皇后问题;
    
    import java.util.Arrays;
    
    /*
     * n皇后问题:
     * 		在一个n * n的国际象棋盘上放置n个皇后 ,使得这n个皇后不在同一行同一列,同一对角线上 求复合的方案数量
     * 设计思路:
     * 		因为皇后不能同一行和同一列,所以每一行和每一列只能放置一个皇后
     * 		可以用把 1-n列的皇后所在的行号写出(从小到大) 就类似与将行号排列组合  也就是 1-n排列组合
     * 		再筛选出不对角线的
     */
    class GenerateP{
    	
    	private int count;
    	private int n;  //  当前国际象棋盘为n * n  放置n个皇后  
    	private final int maxn = 110;//最多棋盘可为 maxn * maxn
    	private boolean [] hashTable;
    	private int [] p;
    	
    	public GenerateP(int n) {
    		// TODO Auto-generated constructor stub
    		this.n = n;
    		hashTable = new boolean[maxn];
    		p = new int [maxn];
    		Arrays.fill(hashTable, false);
    		Arrays.fill(p, 0);
    		count = 0;
    	}
    	public void generatep(int index){
    		if(index == n + 1){
    			boolean flag = true;
    			for(int i = 1; i <= n ;i++){
    				for(int j = i + 1; j <= n ;j++){
    					if(Math.abs(i - j) == Math.abs(p[i] - p[j])){
    						flag = false;
    						break;
    					}
    				}
    			}
    			if(flag){
    				count++;
    			}
    			return;
    		}
    		
    		
    		for(int x = 1; x <= n; x++){
    			if(hashTable[x] == false){
    				p[index] = x;
     				hashTable[x] = true;
    				generatep(index + 1);
    				hashTable[x] = false;
    			}
    		}
    	}
    	
    	public int getCount(){
    		return this.count;
    	}
    }
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		GenerateP generateP = new GenerateP(8);
    		generateP.generatep(1);
    		System.out.println(generateP.getCount());
    	}
    
    }
    

      

  • 相关阅读:
    Codeforces 653C Bear and Up-Down【暴力】
    Codeforces 653B Bear and Compressing【DFS】
    Codeforces 653B Bear and Compressing【DFS】
    Codeforces 653A Bear and Three Balls【水题】
    Codeforces 645D Robot Rapping Results Report【拓扑排序+二分】
    Codeforces 645C Enduring Exodus【二分】
    软件工程作业01
    《构建之法》阅读笔记5
    登录界面代码
    《构建之法》读书笔记4
  • 原文地址:https://www.cnblogs.com/mlsq2015/p/5899065.html
Copyright © 2011-2022 走看看