dfs——皇后问题(回溯)
1 #include <iostream> 2 using namespace std; 3 int a[100],b[100],c[100],d[100]; 4 int n,sum=0; 5 dfs(int i) 6 { 7 if(i>n) 8 { 9 sum++; 10 if(sum<=3) 11 { 12 for(int i=1;i<=n;i++) 13 { 14 cout << a[i]<< " "; 15 } 16 cout << endl; 17 } 18 } 19 else 20 { 21 for(int j=1;j<=n;j++) 22 { 23 if(!b[j]&&!c[i+j]&&!d[i-j+n]) 24 { 25 a[i]=j; 26 b[j]=1; 27 c[i+j]=1; 28 d[i-j+n]=1; 29 dfs(i+1); 30 b[j]=0; 31 c[i+j]=0; 32 d[i-j+n]=0; 33 } 34 } 35 } 36 }