本文主要是介绍#52 N-Queens II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return the number of distinct solutions to the n-queens puzzle.
Example
Input: 4
Output: 2
解题
和51一模一样……这里位操作就贼快……
class Solution {int nn;int count;public void FindQueens(int k, int l, int r){if(k == nn){count ++;return;}int x = nn & (~ (k | l | r));while(x != 0){int index = x & (~ x + 1); //求补码,然后补码和原码求与,找到最右一个1,x -= index;FindQueens(k | index, (l | index) << 1, (r | index) >> 1);}}public int totalNQueens(int n) {int k, l, r, x, i;nn = (int) (Math.pow(2, n) - 1);k = 0;l = 0;r = 0;count = 0;FindQueens(k, l, r);return count;}
}
这篇关于#52 N-Queens II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!