HDU 2553 N皇后,沒預處理會超時

2021-06-09 11:27:33 字數 504 閱讀 5907

這題寫了幾個版本,第一次寫超時,於是用乙個陣列儲存當前路徑,這樣對於判斷是否可以放置有利,但是還是超時。

最後發現是之所以會超時,是因為測試的例子非常多,應該使用預處理,如果每次都重新計算會超時,只要把結果儲存在陣列,然後每次查詢即可。

**最終版本:

#include using namespace std;

const int n = 11;

int map[n][n];

int cnt;

int n;

int c[n];//儲存當前解

int a[n];//儲存預處理結果

bool place(int k)

return true;

}void backtrack(int k)

else

} }}

int main()

while(cin >> n, n)

return 0;

}

HDU 2553 N皇后問題

題目 problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數...

HDU 2553 N皇后問題

復健。一題經典的回溯法,要打表。include define max n 11 int n,res int c max n ans max n void dfs int cur if flag dfs cur 1 int main int m while scanf d m m printf d n...

HDU 2553 N皇后問題

題目資訊 一種非常有用的二進位制優化方法 hdu2553n皇后問題 problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。in...