N queens 2

题目:

Follow up for N-Queens problem.

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

思路:与N queens 一样

 

代码:

class Solution {
public:
    
    bool isOK(vector<int> oneSolution, int k, int val){
        
        for (int i=0; i<k; i++){
            
            if (oneSolution[i] == val) return false;
            else if (abs(val-oneSolution[i]) == abs(i-k)) return false;
            
        }
        return true;
    }
    
    void backtracking(vector<int> oneSolution, int k, int n, int &count){
        
        if (k == n) {
            count+=1;
        }
        
        else{
            
            k = k+1;
            for (int i=0; i<n; i++){
                
                if (!isOK(oneSolution, k-1, i)) continue;
                
                oneSolution[k-1] = i;
                backtracking(oneSolution, k, n, count);
            }
        }
    }
    
    int totalNQueens(int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        
        
        int k = 0;
        vector<int> oneSolution(n);
        int count = 0;
        backtracking(oneSolution, k, n, count);
        return count;
        
    }
};

  

原文链接: https://www.cnblogs.com/tanghulu321/archive/2013/04/30/3051639.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    N queens 2

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/86585

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午10:39
下一篇 2023年2月9日 下午10:40

相关推荐