思路:按照一定的字典序深搜,當時我的想法是把所有的可行的路徑都找出來,然後字典序排序。
後來,凡哥說可以在搜尋路徑的時候就按照字典序搜尋,這樣一找到可行的路徑就輸出來就行了。這裡我吸取了之前八皇后問題時犯的錯,並且優化了一下寫法,就是flag,這是參考了jhf大神的寫法了。
但是jhf大神的寫法,思路和我一樣,但是他的x,y座標還要轉來轉去,我就沒有這麼寫了,還是按照我的**風格好一些。
#include #includebool 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...