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

    dfs:根据行或者列开始,

    假设根据行,

    从第1行开始,从第一行的每一列对应的元素开始dfs,直到第n行,输出结果

     1 /*************************************************************************
     2 > File Name: N-Queens.cpp
     3 > Author: zhoukang1991
     4 > Mail: zhoukang199191@126.com
     5 > Created Time: 2014年08月14日 星期四 22时20分03秒
     6 ************************************************************************/
     7 #include <iostream>
     8 #include <vector>
     9 #include <string>
    10 #include <alogrithm>
    11 using namespace std;
    12 class Solution{
    13 public:
    14 vector<vector<string> > res;
    15 vector<vector<string> > solveNQueens(int n){
    16 res.clear();
    17 vector<int> A(n,-1);
    18 solve(A,0,n);
    19 return res;
    20 }
    21 void solve(vector<int> A,int cur,int n){
    22 if(cur == n){
    23 vector<string> r;
    24 for(int i = 0; i < n ;++i){
    25 string str(n,'.');
    26 str(A[i]) = 'Q';
    27 r.push_back(str);
    28 }
    29 res.push_back(r);
    30 }
    31 else{
    32 for(int i = 0 ; i < n ; ++i){
    33 A[cur] = i;
    34 if(isValid(A,cur)){
    35 solve(A,cur+1,n);
    36 }
    37 }
    38 }
    39 }
    40 bool isValid(vector<int> A,int r){
    41 for(int i = 0 ; i < r ; ++i){
    42 if(A[i] == A[r] || (abs(A[i]-A[r])==(r-i))){
    43 return false;
    44 }
    45 }
    46 return true;
    47 }
    48 };
    49 int main(){
    50 return 0;
    51 }
  • 相关阅读:
    LG4762 Virus synthesis
    深入浅出Vue.js(一) 变化侦测
    LRU
    时间复杂度 & 空间复杂度
    rem的实现原理
    瀑布流布局
    ts-不懂强记
    Notification
    Grid & Flex
    交换两个变量的值
  • 原文地址:https://www.cnblogs.com/cane/p/3912092.html
Copyright © 2011-2022 走看看