dfs之N皇后問題

2021-09-29 21:52:47 字數 1101 閱讀 8229

#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 共...