seat[i]=j;表示第i行皇后放在第j列位置上
判断是否可以放置 (seat[i]-i)==(seat[n]-n)||(seat[i]+i)==(seat[n]+n)||(seat[i]==seat[n])
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">
#include <iostream>
using namespace std;
#define Slove_num 8
int seat[Slove_num];
bool ok(int n);
int count = 0;
void queen(int n){
if(n == Slove_num){
for(int i = 0;i < n; ++i){
cout<<"("<<i<<","<<seat[i]<<")"<<" ";
}
cout<<endl;
count++;
return ;
}
for(int i = 0; i < Slove_num; ++i){
seat[n] = i;
if(ok(n)){
queen(n+1);
}
}
}
bool ok(int n){
for(int i = 0; i < n; ++i){
if((seat[i]-i)==(seat[n]-n)||(seat[i]+i)==(seat[n]+n)||(seat[i]==seat[n])){
return false;
}
}
return true;
}
int main(){
queen(0);
cout<<count<<endl;
return 0;
}