leetcode之路051 N-Queens
来源:互联网 发布:ubuntu 14.04u盘镜像 编辑:程序博客网 时间:2024/06/05 17:15
题目大意:n皇后问题,使得每一个皇后与其它皇后不在同一行、同一列和同一斜线上。
思路:
深度优先遍历所有情况,遇到不满足时则回溯,可以有非递归实现和递归实现。
ac的代码如下:
class Solution {public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>> resu;vector<int> tmp;for(int k=0;k<n;++k)tmp.push_back(-1);int i=0;while(i>-1){for(++tmp[i];tmp[i]<n;++tmp[i]){if(check(tmp,i))break;}if(tmp[i]<n){if(i==n-1){vector<string> retm;for(int k=0;k<n;++k){string ss="";for(int l=0;l<n;++l)ss+='.';ss[tmp[k]]='Q';retm.push_back(ss);}resu.push_back(retm);}else{++i;tmp[i]=-1;}}else--i;}return resu; }int check(vector<int> aa,int n){for(int i=0;i<n;++i)if(abs(aa[n]-aa[i])==n-i||aa[n]==aa[i])return 0;return 1;}};
class Solution {public:vector<int> tmp; vector<vector<string>> solveNQueens(int n) { vector<vector<string>> resu;for(int k=0;k<n;++k)tmp.push_back(-1);test(resu,0,n);return resu; }void test(vector<vector<string>> &resu,int i,int n){int j;for(j=0;j<n;++j){tmp[i]=j;if(check(tmp,i)){if(i<n-1)test(resu,i+1,n);else{vector<string> retm;for(int k=0;k<n;++k){string ss="";for(int l=0;l<n;++l)ss+='.';ss[tmp[k]]='Q';retm.push_back(ss);}resu.push_back(retm);}}}}int check(vector<int> aa,int n){for(int i=0;i<n;++i)if(abs(aa[n]-aa[i])==n-i||aa[n]==aa[i])return 0;return 1;}};
0 0
- leetcode之路051 N-Queens
- LeetCode之N-Queens
- LeetCode进阶之路(N-Queens)
- LeetCode 051 N-Queens
- LeetCode 051 N-Queens
- LeetCode: N-Queens II [051]
- leetcode 刷题之路 94 N-Queens
- leetcode 刷题之路 95 N-Queens II
- LeetCode第51题之 N-Queens
- leetcode解题方案--051--N-Queens
- 【LeetCode】N-Queens && N-Queens II
- leetcode N-Queens & N-Queens II
- Leetcode: N-Queens && N-Queens II
- 【Leetcode】【python】N-Queens/N-Queens II
- LeetCode: N-Queens II
- LeetCode: N-Queens
- LeetCode : N-Queens
- LeetCode : N-Queens II
- Codeforces Round #323
- hdu 1402 A * B Problem Plus(FFT)
- POJ 2533 Longest Ordered Subsequence
- 日经春秋 20151026
- 倒计时跳转 总结
- leetcode之路051 N-Queens
- 内部类序列化出错
- CSS和SVG中的剪切——clip-path属性和<clipPath>元素
- 指针
- MRC环境 引用计数器
- hdu 4602 Partition(计数)
- 解决thinkPHP出现_STORAGE_WRITE_ERROR_:./Runtime/Cache/Install/xxx.php的解决
- 嵌入式工程师----我来了
- 反转单链表 (三种方法整理)