回溯法-求n皇后问题

/* 回溯法----n皇后问题 */ #include <stdio.h> #include <math.h> int x[1000]; /*判断x[k]是否符合要求*/ int Place(int k) { int i; i=1; while(i<k) { if(x[i]==x[k] || fabs(i-k)==fabs(x[i]-x[k])) return -1; i++; } return 1; } /*n-皇后问题-求解*/ void N_Queens(int n) { int i,j,k; /*初始化*/ x[1]=0; k=1; while(k>0) { x[k]++; //移动到下一列 while(x[k]<=n && Place(k)==-1) x[k]++; if(x[k]<=n) if(k==n) { printf("ans:"); for(i=1; i<=n; i++) printf("%d ", x[i]); printf("/n"); } else { k++; x[k]=0; } else k--; }; } int main() { int n; printf("Input n=?:"); scanf("%d", &n); N_Queens(n); getchar(); getchar(); getchar(); getchar(); return 0; }  

你可能感兴趣的:(input)