• 皇后问题


    51(N皇后问题)

    class Solution {
    public:
        vector<bool> col, dia1, dia2;
        vector<vector<string>> res;
    
        void putQueen(int n, int index, vector<int> &row){
    
            if(index == n){
                res.push_back(generateBoard(n, row));
                return;
            }
    
            for(int i = 0 ; i < n ; i ++)
                if(!col[i] && !dia1[index + i] && !dia2[index - i + n - 1]){
                    row.push_back(i);
                    col[i] = true;
                    dia1[index + i] = true;
                    dia2[index - i + n - 1] = true;
                    putQueen(n, index + 1, row);
                    col[i] = false;
                    dia1[index + i] = false;
                    dia2[index - i + n - 1] = false;
                    row.pop_back();
                }
    
            return;
        }
    
        vector<string> generateBoard(int n, vector<int> &row){
            assert(row.size() == n);
            vector<string> board(n, string(n, '.'));
            for(int i = 0 ; i < n ; i ++)
                board[i][row[i]] = 'Q';
            return board;
        }
        
        vector<vector<string>> solveNQueens(int n) {
            res.clear();
    
            col.clear();
            for(int i = 0 ; i < n ; i ++)
                col.push_back(false);
    
            dia1.clear();
            dia2.clear();
            for(int i = 0 ; i < 2 * n - 1 ; i ++){
                dia1.push_back(false);
                dia2.push_back(false);
            }
    
            vector<int> row;
            putQueen(n, 0, row);
    
            return res;
        }
    };
    

      

    52

    37(求解数独)

  • 相关阅读:
    9 与python2交互
    8 内置函数(未完成)
    7 事务
    [转]jquery.vTicker(垂直滚动)
    2015年工作总结(2016-02-02)
    jQuery plugin : jqTransform
    JQuery知识总结
    JQuery事件处理的注意事项
    JQuery基本选择器
    [二]JQueryMobile常用的组件介绍
  • 原文地址:https://www.cnblogs.com/darklights/p/11664009.html
Copyright © 2020-2023  润新知