zoukankan      html  css  js  c++  java
  • LeetCode 51. N皇后

    皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

    上图为 8 皇后问题的一种解法。

    给定一个整数 n,返回所有不同的 皇后问题的解决方案。

    每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。

    示例:

    输入: 4
    输出: [
     [".Q..",  // 解法 1
      "...Q",
      "Q...",
      "..Q."],
    
     ["..Q.",  // 解法 2
      "Q...",
      "...Q",
      ".Q.."]
    ]
    解释: 4 皇后问题存在两个不同的解法。

     1 class Solution {
     2 public:
     3     vector<vector<string>> v;
     4     vector<string> vv;
     5     vector<int> path;
     6     int size;
     7     vector<vector<string>> solveNQueens(int n) {
     8         size = n;
     9         string s = "";
    10         for(int i = 0;i < n;++i)
    11         {
    12             s += ".";
    13         }
    14         for(int i = 0;i < n;++i)
    15         {
    16             path.push_back(-1);
    17         }
    18         for(int i = 0;i < n;++i)
    19             vv.push_back(s);
    20         dfs(0);
    21         return v;
    22     }
    23     void dfs(int x)
    24     {      
    25         if(x == size)
    26         {
    27             v.push_back(vv);
    28         }
    29         for(int i = 0;i < size; ++i)
    30         {
    31             if(check(x,i))
    32             {
    33                 path[x] = i;
    34                 vv[x][i] = 'Q';
    35                 dfs(x+1);
    36                 path[x] = -1;
    37                 vv[x][i] = '.';
    38             }
    39         }
    40     }
    41     bool check(int x,int k)
    42     {
    43         if(x == 0)
    44             return true;
    45         for(int i = 0;i < x;i++)
    46         {
    47             if(path[i] == k || abs(i - x) == abs(k - path[i]))
    48             {
    49                 return false;
    50             }
    51         }
    52         return true;
    53     }
    54     
    55 };
  • 相关阅读:
    python中的特殊函数__call__
    python的内存机制
    tf.train.Saver()-tensorflow中模型的保存及读取
    修改过的bug
    JQuery的attr 与 val区别及使用
    多线程处理同一个List测试dome
    synchronized 使用总结
    oracle 自定义函数
    第一天写博客,分享下学习oracle存储过程的过程
    SqlServer
  • 原文地址:https://www.cnblogs.com/Jawen/p/10846831.html
Copyright © 2011-2022 走看看