N皇后种数
来源:互联网 发布:协和医院整形外科 知乎 编辑:程序博客网 时间:2024/06/05 20:24
#include<stdio.h>#include<stdlib.h>#include<string.h>int c[20], n, cnt=0;void dfs(int r){ int i,j,ok; if(r == n) { ++cnt; return; } for(i=0; i<n; ++i) { c[r] = i; ok = 1; for(j=0; j<r; ++j) if(c[r]==c[j] || r-j==c[r]-c[j] || r-j==c[j]-c[r]) { ok = 0; break; } if(ok) { dfs(r+1); c[r]=0; } }}int main(){ while(~scanf("%d",&n)) { if(n==0||n>10) break; cnt=0; dfs(0); printf("%d\n",cnt); } return 0;}
0 0