1. 程式人生 > >第一次上傳程式碼 處女秀-回溯法解決八皇后問題

第一次上傳程式碼 處女秀-回溯法解決八皇后問題

c語言

# include<stdio.h>
# include<math.h>
# define max 8
int queen[max],sum=0;
int check(int n){
int i;
for(i=0;i<n;i++){
if(queen[n]==queen[i]||abs(queen[n]-queen[i])==(n-i))
return 0;//當前位置不滿足
}
return 1;//當前位置滿足
}
void put(int n){  //n為橫座標
int check(int n);
void show();
int i;
for(i=0;i<max;i++){
queen[n]=i;
if(check(n)){
if(n==max-1) {//棋盤擺滿,輸出結果
show();
}
else put(n+1);//否則,擺放下一個位置

}
}
void show(){
int i;
printf("(");
for(i=0;i<max;i++){
printf("%d ",queen[i]);

}
sum++;//解的個數
printf(")\n");
}
int main(){
put(0);
printf("%d\n",sum);
return 0;
}