leetcode: N-Queues
来源:互联网 发布:超图软件 新浪财经 编辑:程序博客网 时间:2024/04/30 01:10
N-Queens
The n-queens puzzle is the problem of placing n queens on ann×n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where'Q'
and '.'
both indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
[ [".Q..", // Solution 1 "...Q", "Q...", "..Q."], ["..Q.", // Solution 2 "Q...", "...Q", ".Q.."]]
解法:
典型的深搜算法,直接上代码:
#include <iostream>#include<vector>#include <string>using namespace std;//C(N,0)表示第i行皇后所在的列数void DFS(vector<int> C, vector<vector<string>> &result, int row){int flag=0; //与前面的皇后所在的列有没有冲突int N=C.size();if (row == N){//输出结果vector<string> solution;for (int i=0;i<N;i++){string s(N,'.');for (int j=0;j<N;j++){if (j == C[i]){s[j]='Q';}}solution.push_back(s);}result.push_back(solution);return;}for (int j=0;j<N;j++) //逐列尝试{flag=0;for(int i=0;i<row;i++){if (j==C[i] || abs(j-C[i]) == abs(i-row)){flag=1; // 有冲突break;}}if (!flag){C[row]=j;DFS(C, result, row+1);}}}int main(){int N=8;vector<int> C(N,0);vector<vector<string>> result;DFS(C, result, 0);return 0;}
0 0
- leetcode: N-Queues
- [LeetCode]Implement Stack using Queues
- [LeetCode] Implement Stack using Queues
- [leetcode] Implement Stack using Queues
- LeetCode Implement Stack using Queues
- #leetcode#Implement Stack using Queues
- Leetcode: Implement Stack using Queues
- [LeetCode] Implement Stack using Queues
- [Leetcode]Implement Stack using Queues
- leetcode--Implement Stack using Queues
- LeetCode Implement Stack using Queues
- LeetCode || Implement Stack using Queues
- Leetcode Implement Stack using Queues
- LeetCode Implement Stack using Queues
- [leetcode] Implement Stack using Queues
- Leetcode: Implement Stack using Queues
- LeetCode-Implement Stack using Queues
- LeetCode Implement Stack using Queues
- 个人专著《企业级GIS设计管理优化策略》已经出版等待您的选购
- 基于Storm的Nginx log实时监控系统
- .net 验证码
- hdu1558——Segment set
- c语言使用中的一点感慨
- leetcode: N-Queues
- HOJ 2634 How to earn more [网络流]最大权闭合图
- OSX10.9 QT5.3.1 关于加载动态库(Cannot load library.....)
- 文章列表上一章
- 周期串
- 常用函数之指定目录下查询文件
- 文章列表下一章
- 【索引】String Algorithms::Exercises: Beginner
- 如何在N个无序数组元素中,查找第K大元素