您的位置:首页 > 编程语言

第一次上传代码 处女秀-回溯法解决八皇后问题

2017-02-25 17:26 274 查看
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
==queen[i]||abs(queen
-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
=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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: