(水)POJ 2488字典序dfs

2021-07-11 00:10:20 字數 616 閱讀 3092

題目大意:給乙個p,q分別代表圖的行與列數(列在輸出時用a,b......表示),規定乙個走的規則,求出走遍所有格仔且不重複的方法,若有多種答案則輸出字典序最小的,無輸出impossible。這裡的字典序以列優先,即a2

分析:想要走遍全圖很簡單,這裡棘手的便是要輸出字典序最小的乙個,由於dfs的特性,我們可以用貪心的思想來遍歷,1.每次dfs的入口應該按照先列舉列再枚舉行  2.每次dfs在遞迴時總是有8種走法,我們按照預先設定好的按字典序從小到大的方式來走  。   這樣就可以做到第一次走完的是最小字典序的走法了。

直接上**:

#include#includeusing namespace std;

int p,q,kase,t;

int d[8][2]=,,,,,,,}; //必須按照此順序

bool vis[10][10];

bool flag=1;

struct point

prv[100]; //記錄路徑

void print()

} return;

}int main()

if(flag)

}return 0;

}

Poj 2488 ,按照字典序深搜

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

POJ2488 騎士遊歷 DFS

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

POJ 2488 爵士問題 DFS遍歷

路線可能有多條,線路要求輸出的是按字典序搜尋出現的第乙個路線 也就是要從 1,1 開始 思路 從 1,1 點開始,直接深搜八個方向,注意方向的優先順序 直接搜尋就可以 程式設計要細心,如將 寫成 導致除錯乙個多小時,此類錯誤以後務必杜絕!include include include using n...