原始版N皇后问题,最慢的算法
#include<stdio.h> #include<string.h> int c[15],sum,n; int map[15][15]; void dfs(int ); int main() { while(scanf("%d",&n)&&n) { sum=0; memset(c,0,sizeof(c)); dfs(0); printf("%d\n",sum); } return 0; } void dfs(int num) { if(num==n) { sum++; return ; } int i,j,hang_c,lie_c; for(i=0;i<n;i++) { for(j=0;j<num;j++) { hang_c=num-j; if(hang_c<0) hang_c=0-hang_c; lie_c=c[j]-i; if(lie_c<0) lie_c=0-lie_c; if(lie_c==hang_c||i==c[j]) { break; } } if(j==num) { c[num]=i; dfs(num+1); } } }