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);
				}
				
			}
		}
		
	}

}

  

原文地址:https://www.cnblogs.com/dongqiSilent/p/3437272.html