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

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

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

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

    示例:

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

     1 class Solution {
     2 public:
     3     
     4     int res = 0;
     5     int size;
     6     vector<int> path;
     7     int totalNQueens(int n) {
     8         size = n;
     9         for(int i = 0;i < n;++i)
    10         {
    11             path.push_back(-1);
    12         }
    13         dfs(0);
    14         return res;
    15     }
    16     void dfs(int x)
    17     {
    18         if(x == size)
    19         {
    20             res++;
    21         }
    22         for(int i = 0;i < size; ++i)
    23         {
    24             if(check(x,i))
    25             {
    26                 path[x] = i;
    27                 dfs(x+1);
    28                 path[x] = -1;
    29             }
    30         }
    31     }
    32     bool check(int x,int k)
    33     {
    34         if(x == 0)
    35             return true;
    36         for(int i = 0;i < x;i++)
    37         {
    38             if(path[i] == k || abs(i - x) == abs(k - path[i]))
    39             {
    40                 return false;
    41             }
    42         }
    43         return true;
    44     }
    45 
    46 
    47 };


  • 相关阅读:
    VMware下三种网络连接模式介绍
    Linux下tomcat的启动,关闭,以及shutdown失败杀死进程的方法
    C语言 寒假作业 01
    学期总结
    第十六周助教总结
    第十五周助教总结
    C语言I博客作业08
    first program
    第十四周助教总结
    前七章主要知识点
  • 原文地址:https://www.cnblogs.com/Jawen/p/10846450.html
Copyright © 2011-2022 走看看