include
using namespace std; int xx[3][4]={11,11,11,11,11,11,11,11,11,11,11,11}; int dx[8]={1,-1,0,0,1,1,-1,-1}; int dy[8]={0,0,1,-1,1,-1,1,-1}; bool v[10]={false}; int num=0; bool f(int a,int b){ if(xx[a][b]>10){return true;} for(int i=0;i<8;i++){ if((a+dy[i])>=0&&(a+dy[i])<3&&b+dx[i]>=0&&b+dx[i]<4){ if(xx[a][b]+1==xx[a+dy[i]][b+dx[i]]||xx[a][b]-1==xx[a+dy[i]][b+dx[i]]){ return false; } } } return true; } void dfs(int k){ if(k==10){num++;return;} for(int i=0;i<3;i++){ for(int j=0;j<4;j++){ if(f(i,j)&&v[k]==false){ v[k]=true; xx[i][j]=k; dfs(k+1); xx[i][j]=11; v[k]=false; } } } } int main() {
dfs(0); cout<<num; return 0; }求助,为什么运行超时,代码运行复杂和我一样的都过了