HDU2553 N皇后问题
2012-08-29 09:21
267 查看
题意:有名的N皇后问题。输入N,求符合要求的N皇后排法有几个。
思路:看注释
思路:看注释
#include<iostream> #include<stack> using namespace std; #define MAXN 10 + 3 int list[MAXN]; int counts[MAXN]; int count = 0; int n; void search(int m) { //m表示层数,一开始从0开始search(),程序会一直回朔到第n层 if (n == m) { //因为遍历是从0开始的。这里也可以写成if (n - 1 == m - 1) count ++; return; } for (int i=0; i<n; i++) { bool ok = true; list[m] = i; for (int j=0; j<m; j++) { if (list[m] == list[j] || m + list[m] == j + list[j] || m - list[m] == j - list[j]) { //对于第m层的每个可能的点i,与m层之前的m-1层进行比较,如果符合规则就search() m + 1 层 ok = false; break; } } if (ok) { search(m + 1); } } } void init() { for (int i=1 ;i<=10; i++) { //打表 n = i; count = 0; search(0); counts[i] = count; } } int main() { init(); while (cin>>n, n) { //count = 0; //search(0); cout<<counts <<endl; } return 0; }
相关文章推荐
- HDU2553-N皇后问题
- HDU2553:N皇后问题(DFS)
- hdu2553 N皇后问题【二进制状态压缩基础】
- hdu2553 N皇后问题
- DFS hdu2553 N皇后问题
- N皇后问题(hdu2553,dfs+打表)
- hdu2553N皇后问题
- N皇后问题hdu2553(dfs)
- HDU2553N皇后问题(BFS)
- hdu2553-N皇后问题 DFS
- HDU2553-回溯-N皇后问题
- HDU2553 N皇后问题【回溯法】
- HDU2553 N皇后问题
- 深搜--n皇后问题 hdu2553
- HDU2553 N皇后问题
- HDU2553 N皇后问题(回溯法)
- hdu2553 n皇后问题
- HDU2553-N皇后问题(DFS)
- hdu2553 N皇后问题(回溯dfs)
- HDU2553 N皇后问题---(dfs)