題目:http://oj.ipoweru.cn/problem/10701
#include<bits/stdc++.h> using namespace std; int n,sum,a[20],m,x,y,ans; bool b[20],c[30],d[20],bj[20][20]; int dfs(int i,int sum) { if(sum==n)ans++; for(int j=1;j<=n;j++) { if(!b[j]&&!c[i-j+n]&&!d[i+j]&&!bj[i][j]){ //a[i]=j; b[j]=1; c[i-j+n]=1; d[i+j]=1; dfs(i+1,++sum); b[j]=0; c[i-j+n]=0; d[i+j]=0; sum--; } } return ans; } int main() { cin>>n>>m; for(int i=1;i<=m;i++) { cin>>x>>y; bj[x][y]=1; } cout<<dfs(1,0); return 0; }