zoukankan      html  css  js  c++  java
  • N皇后问题代码

    /*.h*/
    #ifndef _NQUEEN_H
    #define _NQUEEN_H
    #include<iostream> 
    #include<vector> 
    #include<string> 
    using namespace std;
    
    
    class Queen{
    public:
        Queen();
        Queen(int num);
        //~Queen();
        void show(const vector<vector<string>>&input);
        void solve();
    private:
        bool is_valid(const int row, const int col);
        //void init(const int num);
        void TraceBack(const int curRow);
    private:
        int m_num;
        vector<int>pos;
        vector<vector<string>>res;
    };
    
    #endif
    /*cpp*/
    #include"NQueen.h"
    
    Queen::Queen(int num) :m_num(num), pos(4, -1){ }
    void Queen::TraceBack(int curRow){
        //cout << m_num << endl;
        if (curRow == m_num)
        {
            vector<string>out(m_num, string(m_num, '*'));
            for (int i = 0; i < m_num; i++){
                out[i][pos[i]] = 'Q';
            }
            res.push_back(out);
        }
        else{
            for (int col = 0; col < m_num; col++){
                if (is_valid(curRow, col)){
                    pos[curRow] = col;
                    TraceBack(curRow + 1);
                    pos[curRow] = -1;
                }
            }
        }
    }
    bool Queen::is_valid(int row, int col){
        for (int i = 0; i < row; i++){
            if (pos[i] == col || abs(i - row) == abs(pos[i] - col))
                return false;
        }
        return true;
    }
    void Queen::solve(){
        TraceBack(0);
        //cout << res.size() << endl;
        show(res);
    }
    void Queen::show(const vector<vector<string>>&input){
        //cout << input.size() << endl;
        //cout << input[0].size() << endl;
        for (int i = 0; i < input.size(); i++){
            for (int j = 0; j < input[0].size(); j++){
                cout << input[i][j] << endl;
                //if ((j + 1) % input.size() == 0)cout << input[i][j]<<e
            }
            cout << endl;
        }
    }
  • 相关阅读:
    PHP中的list(),each(),reset()函数应用
    echo(),print(),print_r()
    Math.floor() 与 parseInt()
    利用Node.js轻松创建web服务器
    MySQL中Datetime与Timestamp
    修正正则匹配日期---基于网络未知大神的正则
    数据结构随笔-php实现栈
    数据结构随笔-php实现队列
    Js 获取时间戳
    linux 安装nginx+php+mysql
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/8820803.html
Copyright © 2011-2022 走看看