八皇后问题

来源:互联网 发布:美团外卖消费数据分析 编辑:程序博客网 时间:2024/06/06 16:27
用递归回溯法:
#include<stdio.h>#define N 8int solution[N],j,k,sols;int place(int row,int col)//判断是否在同一条直线上(直线、斜线 ){for(j=0;j<row;j++){if(row-j==solution[row]-solution[j]||row+solution[row]==j+solution[j]||solution[j]==solution[row])return 0;}return 1;} void backtrack(int row)//回溯试探{if(N==row){sols++;for(k=0;k<N;k++)printf("%d\t",solution[k]);printf("\n\n");}else{int i;for(i=0;i<N;i++){solution[row]=i;if(place(row,i))backtrack(row+1);}}}void queens(){backtrack(0);}int main(void){queens();printf("总共: %d 种摆法\n",sols);return 0;}

0 0
原创粉丝点击