51. N-Queens
来源:互联网 发布:备案的是域名还是主机 编辑:程序博客网 时间:2024/06/07 00:01
题目链接:
https://leetcode.com/problems/n-queens/?tab=Description
代码如下:
#include <iostream>#include<vector>#include<string>#include<cstdio>#include<cstring>using namespace std;#define maxn 10000vector< vector<string> > ans;int aa[maxn];int sum;void search(int cur,int n){ vector<string>aa1; if(cur==n) { for(int i=0; i<n; i++) { string tmp=""; for(int j=0; j<n; j++) { if(aa[i]==j) tmp+="Q"; else tmp+="."; } aa1.push_back(tmp); } ans.push_back(aa1); sum++;///方案加一 } else { for(int i=0; i<n; i++) { aa[cur]=i; int ok=1; for(int j=0; j<cur; j++) { if(aa[j]==aa[cur]||cur-aa[cur]==j-aa[j]||cur+aa[cur]==j+aa[j]) { ok=0; break; } } if(ok) ///代表之前的摆法是正确的,考虑下一列的摆法 search(cur+1,n); } }}int main(){ int n; while(scanf("%d",&n)==1) { sum=0;///注意初始化 ans.clear(); memset(aa,-1,sizeof(aa));///从cur=0开始 search(0,n); for(int i=0;i<ans.size();i++) { for(int j=0;j<ans[i].size();j++) { cout<<ans[i][j]<<endl; } if(i!=ans.size()-1) printf("\n\n"); } printf("%d\n",sum); } return 0;}
另:该题做法可以对比另一种解法,链接如下:
http://blog.csdn.net/qq_27690765/article/details/56669520
0 0
- 51. N-Queens && 52. N-Queens II
- 51. N-Queens/52. N-Queens II
- LeetCode 51. N-Queens
- LeetCode --- 51. N-Queens
- LeetCode 51.N-Queens
- [Leetcode] 51. N-Queens
- 51.N-Queens
- [leetcode] 51.N-Queens
- 51. N-Queens
- [leetcode] 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- leetcode 51. N-Queens
- 【LeetCode】51. N-Queens
- leetcode 51. N-Queens
- LeetCode 51. N-Queens
- 51. N-Queens
- LeetCode 51. N-Queens
- js封装-简单雪花插件
- js解析json报错
- LeetCode作业Majority Element
- golang中读写锁RWMutex和通用锁Mutex的使用
- 42. Trapping Rain Water
- 51. N-Queens
- Flume 1.7 源码分析(五)从Channel获取数据写入Sink
- Android开发进阶—View的工作原理
- Java实现文件复制的两种方式
- 这只是一个练习
- seo软文标题写作技巧:好的标题是靠这样想出来的
- JUC-Map的选择
- 什么是android
- bzoj 1230 线段树 标签