这个题目的重点是算法
★★★★★为人民服务★★★★★
#include <stdio.h> #define N 7 int row[7],col[7],n,ans; void dfs(int h,int l) { if (h==n-1) { int p=0,i,j; for (i=0; i<n; i++) { for (j=0; j<n; j++) if ((col[i]&(1<<j))==0) break; if ((p&(1<<j))!=0) return; p|=(1<<j); } ans++; return; } int i; for (i=0; i<n; i++) if ((row[h]&(1<<i))==0 && (col[l]&(1<<i))==0) { row[h]|=(1<<i); col[l]|=(1<<i); if (l==n-1) dfs(h+1,0); else dfs(h,l+1); row[h]^=(1<<i); col[l]^=(1<<i); } } void calc() { int i; ans=0; memset(row,0,sizeof(row)); memset(col,0,sizeof(col)); for (i=0; i<n; i++) row[0]+=(1<<i); for (i=0; i<n; i++) col[i]+=(1<<i); dfs(1,0); } int main() { scanf("%d",&n); calc(); printf("%d\n",ans); system("pause"); }