/*
8皇后
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
#define N 8
int cnt;
bool legal( int list[] , int num , int cur_step ){
int i;
for( i = 1 ; i < cur_step ; i ++ ) {
//行不冲突,对角线不冲突
if( ( list[ i ] == num ) || ( abs( i - cur_step ) == abs( list[ i ] - num ) ) ) {
return false;
}
}
return true;
}
void dfs( int list[] , int cur_step ) {
int i;
if( cur_step == N + 1 ) {
for( i = 1 ; i <= N ; i ++ ) {
cout << list[ i ];
}
cout << endl;
cnt ++;
return;
}
for( i = 1 ; i <= N ; i ++ ) {
if( legal( list , i , cur_step ) ) {
list[ cur_step ] = i;
dfs( list , cur_step + 1 );
}
}
}
int _tmain(int argc, _TCHAR* argv[]) {
int list[ N + 1 ] = { 0 };
cnt = 0;
dfs( list , 1 );
cout << cnt << endl;
return 0;
}
8皇后
最新推荐文章于 2023-03-16 21:07:03 发布