LeetCode-N-Queens-N皇后-回溯
https://oj.leetcode.com/problems/n-queens/
回溯法的课本例题。注意有递归非递归两种实现。
class Solution { public: int n,m; vector <int> c; vector <vector<string>> tot; bool Check(int p,int q){ for (int i=0;i<p;i++){ if (c[i]==q) return false; if (abs(p-i)==abs(q-c[i])) return false; } return true; } void Solve(int p){ if (p==n) { vector <string> res(n,string(n,'.')); for (int i=0;i<n;i++){ res[i][c[i]]='Q'; } tot.push_back(res); return; } for (int i=0;i<n;i++){ if (Check(p,i)){ c[p]=i; Solve(p+1); } } } vector<vector<string> > solveNQueens(int n) { this->n=n; c.resize(n,-1); Solve(0); return tot; } };