zoukankan      html  css  js  c++  java
  • 52. N-Queens II (Array; Back-Track)

    Follow up for N-Queens problem.

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

    class Solution {
    public:
        int totalNQueens(int n) {
            result = 0;
            if(n==0) return result;
            
            vector<int> flag(n,-1); //每行的Q出现在哪列
            backTracking(n, flag, 0);
            return result;
    
        }   
        
        void backTracking(int n, vector<int>& flag, int depth){ //depth is the line number
            if(depth==n){
                result++;
                return;
            }
            
            for(int i = 0; i < n; i++){ //traverse column
                if(check(n,flag, depth, i)) {
                    flag[depth] = i;
                    backTracking(n,flag,depth+1);
                    flag[depth] = -1; // back track
                }
            }
        }
        
        bool check(int n, vector<int>& flag, int i, int j){
            for(int k = 0; k < i; k++){
                if(flag[k] < 0) continue;//no Q in this column
                if(flag[k]==j) return false;//check columns
                if(abs(i-k)==abs(j-flag[k])) return false; //check cross lines
            }
            return true;
        }
    private: 
        int result;
    };
  • 相关阅读:
    1039 到底买不买 (20分)
    流密码
    Socket网络编程:互相通讯
    1036 跟奥巴马一起编程
    1033 旧键盘打字
    1029 旧键盘
    1015 德才论 (25分)
    BUU_Real_刷题记录
    vue3 composition api 对比 react hooks
    vue3 文档相关
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4856959.html
Copyright © 2011-2022 走看看