N皇后
在n×n的国际象棋盘上,放置n个皇后,使任何一个皇后都不能吃掉另一个,需满足的条件是:同一行、同一列、同一对角线上只能有一个皇后。
求所有满足要求的方案数。
【样例输入】
4
【样例输出】
2
1 #include <iostream> 2 3 using namespace std; 4 5 int n,ans; 6 bool judge[4][5005]; 7 8 void DFS(int line) 9 { 10 if(line==n+1) 11 { 12 ans++; 13 return ; 14 } 15 for(int i=1;i<=n;i++) 16 { 17 if(!judge[1][i]&&!judge[2][i+line]&&!judge[3][n+10-i+line]) 18 { 19 judge[1][i]=true,judge[2][i+line]=true,judge[3][n+10-i+line]=true; 20 DFS(line+1); 21 judge[1][i]=false,judge[2][i+line]=false,judge[3][n+10-i+line]=false; 22 } 23 } 24 return ; 25 } 26 27 int main() 28 { 29 cin>>n; 30 DFS(1); 31 cout<<ans; 32 return 0; 33 }
——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。