你们聪明的,告诉我,这个代码如何剪枝???(在加入N==13时特殊判断后可AC)
#include <bits/stdc++.h>
using namespace std;
int n,q[15],s=0;
void dfs(int step){
if(step==n)s++;
else for(int i=0;i<n;i++){
int p=0;
q[step]=i;
for(int j=0;j<step;j++)if(q[step]==q[j]||step-q[step]==j-q[j]||step+q[step]==j+q[j])p=1;
if(!p)dfs(step+1);
}
}
int main(){
cin>>n;
dfs(0);
cout<<s<<endl;
return 0;
}