#include "stdio.h"
#include "conio.h"
#define N 8
int site[N];
int count=0;
void output();
void Queen(int n){
int i;
if(n==N){
output();
count++;
return;
}
for(i=0;i<N;i++){
site[n]=i;
if(isValid(n))
Queen(n+1);
}
}
int isValid(int n){
int i;
for(i=0;i<n;i++){
if(site[i]==site[n]||site[i]-site[n]==i-n||site[i]-site[n]==n-i)
return 0;
}
return 1;
}
void output(){
int i;
for(i=0;i<N;i++)
printf("%-4d",site[i]);
printf("\n");
}
main()
{
Queen(0);
printf("count=%d",count);
getch();
}
算法思想的关键就在于如果在第n列放置皇后,前n-1列必须是符合规则的。
具体可以参考:
http://www.doc88.com/p-60787424868.html