leetcode N-Queens & N-Queens II
2014-05-12 19:37
435 查看
经典的N皇后问题,可以通过回溯的方式进行求解,我这里使用递归实现 II只是统计了I的解的规模
N-Queens II
bool iscan(int x,int y,vector<string>map){ for(int i=0;i<x;i++) for(int j=0;j<map[0].size();j++) if(map[i][j]=='Q'){ if(j==y||i+j==x+y||i-j==x-y)return false; } return true; } void NQueens(int N,vector<vector<string> >&res,vector<string>t,int k){ if(N==k){res.push_back(t);return;} for(int i=0;i<N;i++) if(iscan(k,i,t)){ t[k][i]='Q'; NQueens(N,res,t,k+1); t[k][i]='.'; } } class Solution { public: vector<vector<string> > solveNQueens(int n) { vector<vector<string> > res; vector<string>t; if(n==1){t.push_back("Q");res.push_back(t);return res;} if(n<=3)return res; string s=""; for(int i=0;i<n;i++) s+='.'; for(int i=0;i<n;i++){ t.push_back(s); } NQueens(n,res,t,0); return res; } };
N-Queens II
bool iscan(int x,int y,vector<string>map){ for(int i=0;i<x;i++) for(int j=0;j<map[0].size();j++) if(map[i][j]=='Q'){ if(j==y||i+j==x+y||i-j==x-y)return false; } return true; } void NQueens(int N,int &res,vector<string>t,int k){ if(N==k){res++;return;} for(int i=0;i<N;i++) if(iscan(k,i,t)){ t[k][i]='Q'; NQueens(N,res,t,k+1); t[k][i]='.'; } } class Solution { public: int totalNQueens(int n) { int res=0; vector<string>t; if(n==1)return 1; if(n<=3)return res; string s=""; for(int i=0;i<n;i++) s+='.'; for(int i=0;i<n;i++){ t.push_back(s); } NQueens(n,res,t,0); return res; } };
相关文章推荐
- leetcode 51.N-Queens & 52. N-Queens II
- [LeetCode] [N皇后问题] N-Queens & N-Queens II
- Leetcode 51. N-Queens && 52. N-Queens II(Hard)
- leetcode N-Queens I && N-Queens II
- 【LeetCode】N-Queens && N-Queens II
- Leetcode | N-Queens I & II
- LeetCode-51&52.N-Queens
- LeetCode-51. N-Queens和LeetCode-52. N-Queens II
- Leetcode: N-Queens && N-Queens II
- <LeetCode OJ> 52. N-Queens II
- 51. N-Queens && 52. N-Queens II
- leetcode--n_queens&&n_queens_II
- leetcode N-Queens/N-Queens II, backtracking, hdu 2553 count N-Queens, dfs
- Leetcode 51. N-Queens 52. N-Queens II
- LeetCode - N-Queens I && II
- leetcode做题总结,回溯法(N-Queens, N-QueensII,Combination SumI&II,wordbreak II, SubsetsI&II)
- LeetCode解题报告—— N-Queens && Edit Distance
- 【LeetCode】N-Queens && 【九度】题目1140:八皇后
- 【LeetCode】N-Queens II && 【九度】题目1254:N皇后问题
- 【leetcode】N-Queens I & II