zoukankan      html  css  js  c++  java
  • leetcode N-Queens I && N-Queens II

    第一个的代码:

     1 #include<iostream>
     2 #include<vector>
     3 
     4 using namespace std;
     5 
     6 bool isLegal(int i, int j, vector<string> &current)
     7 {
     8     int size = current.size();
     9     int x = i-1, y = j;
    10     while (x >= 0)
    11     {
    12         if (current[x][y] == 'Q')
    13             return false;
    14         x--;
    15     }
    16     x = i-1;
    17     y = j - 1;
    18     while (x >= 0 && y >= 0)
    19     {
    20         if (current[x][y] == 'Q')
    21             return false;
    22         x--;
    23         y--;
    24     }
    25     x = i - 1;
    26     y = j + 1;
    27     while (x >= 0 && y < size)
    28     {
    29         if (current[x][y] == 'Q')
    30             return false;
    31         x--;
    32         y++;
    33     }
    34     return true;
    35 }
    36 
    37 void getResult(int row, int index, vector<vector<string>> &result, vector<string> &current, int size)
    38 {
    39     if (row == size)
    40         result.push_back(current);
    41     else
    42     {
    43         while (index < size)
    44         {
    45             current[row][index] = 'Q';
    46             if (isLegal(row, index, current))
    47                 getResult(row + 1, 0, result, current, size);
    48             current[row][index] = '.';
    49             index++;
    50         }
    51     }
    52 }
    53 
    54 vector<vector<string>> solveNQueens(int n) 
    55 {
    56     vector<vector<string>> result;
    57     string s = "";
    58     for (int i = 0; i < n; i++)
    59         s.push_back('.');
    60     vector<string> current(n, s);
    61     getResult(0, 0, result, current, n);
    62     return result;
    63 }
    64 
    65 int main()
    66 {
    67     vector<vector<string>> result = solveNQueens(4);
    68     for (int i = 0; i < result.size(); i++)
    69     {
    70         for (int j = 0; j < result[i].size(); j++)
    71             cout << result[i][j].c_str() << endl;
    72         cout << "-_________________________________________-" << endl;
    73     }
    74     return 0;
    75 }

    第二个的代码:
    得,忘了保存了,算了,不贴了,这题也就做到这份上了,讨论区里那个用位的我真是佩服死你啦。。。。。!!!!!!!!!

  • 相关阅读:
    idea的tomcat消失
    数据表南车
    ElementU日历Demo
    ElementUI表格行编辑单元格编辑支持(输入框,选择框)Demo
    expect ':' at 0, actual = (JSON转化异常解决)
    java获取日历格式的日期数据
    java判断某个日期在两个日期之间(区间) (包含或不包含两个日期)
    localDate和Date的转化
    ImmutableMap的put方法问题
    invalid comparison: java.time.LocalDate and java.lang.String
  • 原文地址:https://www.cnblogs.com/chaiwentao/p/4614423.html
Copyright © 2011-2022 走看看