zoukankan      html  css  js  c++  java
  • N-Queens

    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 all distinct solutions to the n-queens puzzle.

    Each solution contains a distinct board configuration of the n-queens' placement, where 'Q' and '.' both indicate a queen and an empty space respectively.

    For example,
    There exist two distinct solutions to the 4-queens puzzle:

    [ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."] ]
    class Solution {
    public:
        vector<vector<string> > solveNQueens(int n) 
        {
            vector<vector<string>> result;
            if(n==0return result;
            int loc[n];
            generate(result,loc,n,0);
            return result;
        }
        void generate(vector<vector<string>>& result,int* loc,int n,int row)
        {
            if(row==n)
            {
                vector<string> v;
                for(int i=0;i<n;i++)
                {
                    string s;
                    for(int j=0;j<n;j++) s=s+".";
                    s[loc[i]]='Q';
                    v.push_back(s);
                }
                result.push_back(v);
                return;
            }
            for(int i=0;i<n;i++)
            {
                int j;
                for(j=0;j<row;j++)
                    if(loc[j]==i || row-j==loc[j]-i || row-j==i-loc[j])
                        break;
                if(j==row)
                {
                    loc[row]=i;
                    generate(result,loc,n,row+1);
                }
            }
        }
    };
  • 相关阅读:
    记录爱忘记的STL知识点
    小狼
    CVTE总结
    STL底层实现
    小狼,你家BOSS喊你面试啦!!!(四)
    npm属性笔记
    iview中关于table组件内放入Input会失去焦点
    js实现数组内数据的上移和下移
    google搜索使用技巧
    bat中实现代码拷贝到指定目录后启动命令行并更改默认路径
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759385.html
Copyright © 2011-2022 走看看