八皇后问题C语言
#include <stdio.h>
int Queenes[8],count=0;
void print(){
int line,index;
for(line=0;line<8;line++)
{
for(index=0;index<Queenes[line];index++)
printf("0");
printf("#");
for(index=Queenes[line]+1;index<8;index++)
printf("0");
printf("\n");
}
printf("================\n");
}
int check(int line,int index){
int i;
for(i=0;i<line;i++){
if(Queenes[i]==index)
return 0;
if((i- Queenes[i] )==(line-index))
return 0;
if((Queenes[i]+i)==(index+line))
return 0;
}
return 1;
}
void eightQueenes(int line){
int index;
for(index=0;index<8;index++){
if(check(line,index)){
Queenes[line]=index;
if(line==7){
count++;
print();
Queenes[line]=0;
return;
}
eightQueenes(line+1) ;
Queenes[line]=0;
}
}
}
int main(){
eightQueenes(0);
printf("有%d种摆法",count) ;
}