#n皇后問題
n皇后問題
題目大概意思是給乙個n*n的棋盤,要在該棋盤上擺放n個皇后,相信看過宮鬥劇的同學都知道…所有要讓他們互不攻擊。每個皇后的攻擊距離是所在行、列、45度對角線(女人殺傷力真的大…(小聲bb))
多組輸入,到0結束。
sample input18
50sample output192
10對於這個題,有乙個問題,找對角線,如果你還沒有思路,那你可以在乙個網格中隨意找兩個處於同一對角線上的點,看看他們之間有什麼規律。
還有就是如果把n開到10,會tle,所以我們選擇常規方法算答案,然後打表輸出。
**如下
#include
#include
#include
#include
#include
#include
using namespace std;
typedef
long
long ll;
const
int n=
1e3+5;
int flag[n]
[n];
int vis[n]
;int n,ans=0;
//void dfs(int d)
//// for(int i=1;i<=n;i++)
//
// }
// vis[i]=1;
// dfs(d+1);
// vis[i]=0;
// for(int k=1;k<=n;k++)
//
// }
// }
// }
//}int
main()
}}
**注釋掉的是找答案的方法,下面把答案找到之後直接輸出。
想想為什麼在標記對角線的時候不直接賦值為1,回溯的時候直接賦值為0?
是因為在回溯的時候你要解除當前點對對角線上該點的影響,而不能接觸其他點對該點的影響。
N皇后問題 DFS
在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...
N皇后問題 dfs)
在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...
N皇后問題 DFS
題 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共...