zoukankan      html  css  js  c++  java
  • 8皇后问题

    直接上代码吧,经测试,8皇后时候的答案是92个。

    public class EightQueen {
    
    	/**
    	 * @param args
    	 */
    	//hits表示有多少个结果
    	public static int hits = 0;
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int[] Queen = new int[8];
    		findQueen(0,Queen);
    		System.out.print(hits);
    
    	}
    	//Queen[i] = j表示的是在数组的第i行,第j列的位置放置皇后
    	//得到Queen数组后便可以轻松求出每个皇后的位置
    	public static void findQueen(int curLine, int[] Queen){
    		int len = Queen.length;
    		if(curLine == len ){
    			hits++;
    		}else {
    			//这里看如果把皇后试探性的放在每一列,是否能够符合要求。
    			for(int i = 0; i < len; i++ ){
    				boolean canPut = true;
    				Queen[curLine] =i ;
    				for(int j = 0; j < curLine;j++){
    					//看看放在某一列时候,是否在这一行之前的皇后,与这一行有冲突
    					
    					if(Queen[curLine] == Queen[j]||Queen[curLine]- Queen[j] == curLine - j|| 
    							Queen[curLine]- Queen[j] == j - curLine
    							){
    						canPut = false;
    						break;
    					}
    				}
    				//如果能够符合要求,接着进行递归
    				if(canPut){
    					findQueen(curLine + 1, Queen);
    				}
    				
    			}
    		}
    		
    	}
    
    }
    

      

  • 相关阅读:
    centos7 安装mysql
    基于flask+requests 个人博客
    python csv、json、pickle数据持久化
    Python之容器、迭代器、生成器
    AJAX常用方法详解
    Python之format详解
    Flask使用MySql数据库
    git 公共服务器
    pci 记录
    检查ept
  • 原文地址:https://www.cnblogs.com/dongqiSilent/p/3437272.html
Copyright © 2011-2022 走看看