八皇后 DFS
【转】http://blog.csdn.net/zxy_snow/article/details/5949706
?
//八皇后#include <stdio.h>#include <stdlib.h>#include <iostream>#include <memory.h>using namespace std;const int n = 8;int map[10][10],visit[10][10];int num,Q;int find(int x,int y){ int sum = 0; for(int i=1; i<=n; i++) //判断对应的列是否已有皇后 { sum += visit[i][y]; } int b = y; int a = x; for(int i=1; i<=n; i++) for(int k=1; k<=n; k++) {if( abs( i-x ) == abs( k-y ))sum += visit[i][k];} return sum == 0 ? 1 : 0 ;}void DFS(int d){ if( Q == 8 ) { num++; return; } for(int i=1; i<=n; i++) { if( !visit[d][i] && find(d,i) ) { visit[d][i] = 1; Q++; DFS( d+1 ); visit[d][i] = 0; Q--; } } }int main(){ num = 0; Q = 0; memset(map,0,sizeof(map)); memset(visit,0,sizeof(visit)); DFS(1); cout << num << endl; system("pause"); return 0;}?