poj 2488 深度優先遍歷

2021-06-06 06:39:07 字數 699 閱讀 6630

題目大意:按照西洋棋騎士的走法,要你讓騎士能夠遍歷每個棋盤的格仔,按照字典序輸出走法,沒有則輸出impossible

解題思路:深度優先遍歷,因為要按字典序輸出,所以,深度遍歷時要按照一定的方向進行遍歷

#include #include #include using namespace std;

const int maxn = 27;

struct node

result[maxn*maxn];

bool map[maxn][maxn];

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

int n, p, q, ans;

bool dfs(int x, int y);

int main()

else

printf("impossible\n");

printf("\n");

}return 0;

}bool dfs(int x, int y)

else

return false;

if(ans == p * q)

return true;

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

map[x][y] = false;

ans--;

return false;

}

POJ 2488 爵士問題 DFS遍歷

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

POJ2488 騎士遊歷 DFS

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

POJ 2488(回溯 剪枝)

與經典的騎士問題不同之處在於 因為要求字典序最小,所以搜尋時我們要保證下乙個可以遍歷到的點是字典序最小的即可 include include int m,n m is row 1,2,n is col a,b,bool canbestart 26 26 record whether i j can ...