Poj 2488 ,按照字典序深搜

2022-04-01 08:18:35 字數 672 閱讀 1968

思路:按照一定的字典序深搜,當時我的想法是把所有的可行的路徑都找出來,然後字典序排序。

後來,凡哥說可以在搜尋路徑的時候就按照字典序搜尋,這樣一找到可行的路徑就輸出來就行了。這裡我吸取了之前八皇后問題時犯的錯,並且優化了一下寫法,就是flag,這是參考了jhf大神的寫法了。

但是jhf大神的寫法,思路和我一樣,但是他的x,y座標還要轉來轉去,我就沒有這麼寫了,還是按照我的**風格好一些。

#include #include 

bool vis[30][30

];int to[8][2] = ,,,,,,,};

intr,c;

bool

flag;

struct

path

path[

30*30

];bool judge(int r,int

c)void dfs(int r,int c,int

k)

for(int i=0; i<8; i++)

}}int

main()

if(flag)

break

; }

if(flag)

else printf("

impossible\n\n");

}return0;

}

(水)POJ 2488字典序dfs

題目大意 給乙個p,q分別代表圖的行與列數 列在輸出時用a,b.表示 規定乙個走的規則,求出走遍所有格仔且不重複的方法,若有多種答案則輸出字典序最小的,無輸出impossible。這裡的字典序以列優先,即a2 分析 想要走遍全圖很簡單,這裡棘手的便是要輸出字典序最小的乙個,由於dfs的特性,我們可以...

poj 2488 深度優先遍歷

題目大意 按照西洋棋騎士的走法,要你讓騎士能夠遍歷每個棋盤的格仔,按照字典序輸出走法,沒有則輸出impossible 解題思路 深度優先遍歷,因為要按字典序輸出,所以,深度遍歷時要按照一定的方向進行遍歷 include include include using namespace std cons...

POJ2488 騎士遊歷 DFS

題目意思是在乙個國際棋盤裡,判斷馬能否不重複的走過所有格,並記錄下其中按字典序排列的第一種路徑。dfs方法解決,由於是字典順序,所以搜尋方向要嚴格規定 本題錯了幾次,原因是memset沒有使用正確,此函式的第三個引數是按位元組的單位,所以陣列長度還要乘以sizeof type 160k 63ms c...