八皇后
题目

这道题目的主要思路是:
就是正常的dfs就有几个点值得注意:
1.我写的程序函数算一层循环里面再加一层循环
2.对角线的处理:

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
//注释:后面加一个 n 是因为数组的下标不能为负所以给他加一个偏移量
程序:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,l[100]={0},h[100]={0},udg[100]={0},dg[100]={0},ans=0; 4 void dfs(int k) 5 { if(k>n) 6 { ans++; 7 if(ans<=3) 8 { for(int i=1;i<=n;i++) cout<<h[i]<<" "; 9 cout<<endl; 10 } 11 return; 12 } 13 for(int i=1;i<=n;i++) 14 { if(l[i]==0&&dg[k+i]==0&&udg[k-i+n]==0) 15 { dg[k+i]=l[i]=udg[k-i+n]=1,h[k]=i; 16 dfs(k+1); 17 dg[k+i]=l[i]=udg[k-i+n]=0; 18 } 19 } 20 } 21 int main() 22 { cin>>n; 23 dfs(1); 24 cout<<ans<<endl; 25 }

浙公网安备 33010602011771号