zoukankan      html  css  js  c++  java
  • leetcode@ [51/52] N-Queens

    https://leetcode.com/problems/n-queens/

     1 class Solution {
     2 public:
     3     void dfs(vector<vector<string>> &ret, vector<vector<char>> map,int i, int j){
     4         if(i==map.size()-1){
     5             vector<string> ans; ans.clear();
     6             for(int ki=0;ki<map.size();++ki){
     7                 string s="";
     8                 for(int kj=0;kj<map[0].size();++kj){
     9                     s+=map[ki][kj];
    10                 }
    11                 ans.push_back(s);
    12             }
    13             ret.push_back(ans);
    14             return;
    15         }
    16         
    17         vector<vector<char>> tmp(map.size());
    18         for(int i=0;i<tmp.size();++i) tmp.resize(map.size());
    19         tmp = map;       
    20         for(int k=0;k<map[0].size();k++){
    21             
    22             if(map[i+1][k]=='.') continue;
    23             
    24             for(int col=0;col<map[0].size();++col){
    25                 if(map[i+1][col]==' ') map[i+1][col]='.'; 
    26             }
    27             for(int row=i+1;row<map.size();++row){
    28                 if(map[row][k]==' ') map[row][k]='.';
    29             }
    30             for(int row=i+2,col=k+1;row<map.size() && col<map[0].size();++row,++col){
    31                 if(map[row][col]==' ') map[row][col]='.';
    32             }
    33             for(int row=i+2,col=k-1;row<map.size() && col>=0;++row,--col){
    34                 if(map[row][col]==' ') map[row][col]='.';
    35             }
    36             map[i+1][k]='Q';
    37 
    38             dfs(ret,map,i+1,k);
    39             
    40             map=tmp;
    41         }
    42         
    43     }
    44     vector<vector<string>> solveNQueens(int n) {
    45         vector<vector<string>> ret;
    46         if(n==0) return ret;
    47         
    48         vector<vector<char>> map(n);
    49         for(int i=0;i<map.size();++i) map[i].resize(n);
    50         for(int i=0;i<map.size();++i){
    51             for(int j=0;j<map[i].size();++j) map[i][j]=' ';
    52         }
    53         
    54         vector<vector<char>> tmp(map.size());
    55         for(int i=0;i<tmp.size();++i) tmp.resize(map.size());
    56         tmp = map;
    57         for(int k=0;k<map[0].size();k++){
    58             for(int col=0;col<map[0].size();++col) map[0][col]='.';
    59             for(int row=0;row<map.size();++row) map[row][k]='.';
    60             for(int row=1,col=k+1;row<map.size() && col<map[0].size();++row,++col) map[row][col]='.';
    61             for(int row=1,col=k-1;row<map.size() && col>=0;++row,--col) map[row][col]='.';
    62             map[0][k]='Q';
    63             
    64             dfs(ret,map,0,k);
    65             
    66             map=tmp;
    67         } 
    68 
    69         return ret;
    70     }
    71 };
  • 相关阅读:
    win server 2012 服务器不能ping通
    Linux系统的文件目录结构
    怎样理解和识别 Linux 中的文件类型
    Linux(Centos 7)下安装Git并配置连接GitHub
    centos 7 下升级自带 sqlite3
    Pycharm项目上传到Github
    计算机存储单位:bit, Byte, KB, MB, GB, TB, PB, EB, ZB, BB
    ubuntu 删除命令
    influxDB 各个历史版本号,时间截止2020年9月27日
    使用Github做一个完全免费的个人网站
  • 原文地址:https://www.cnblogs.com/fu11211129/p/4900310.html
Copyright © 2011-2022 走看看