`
huntfor
  • 浏览: 201261 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[leetcode]N-QueensII

 
阅读更多

新博文地址:

[leetcode]N-QueensII

N-Queens II

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

 八皇后问题,返回解的个数,比返回解的情况还要简单,这个问题之前专门写过一篇博文讲解过,不明白的细节可以看这里

很经典的回溯算法,不多啰嗦。

	int success = 0;
	public int totalNQueens(int n) {
		if(n <= 0){
			return 0;
		}
		int[] place = new int[n];
		place(0,n,place);
		return success;
	}
	
	private void place(int number,int n,int[] place){
		if(number ==  n ){
			success++;
		}
		
		for(int i = 0 ; i < n; i++){
			if(isConflict(place, number, i)){
				continue;
			}else{
				place[number] = i;
				place(number + 1, n, place);
			}
			
		}
		
	}
	
	private boolean isConflict(int[] place,int row ,int column){
		if(row == 0){
			return false;
		}
		for(int i = 0; i < row; i++){
			if(place[i] == column || (place[i] - i) == (column- row) || place[i] + i == column + row){//这里原博文中还加上了(i - place[i]) == (row - column),其实没必要
				return true;
			}
		}
		return false;
	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics