#41232: C++詳解-Pair


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-10-28 09:54:40
c117. 00439 - Knight Moves -- UVa439 | From: [118.171.177.227] | 發表日期 : 2024-07-13 09:42

收資料的時候使用兩個字串將起點跟終點收起來,可以使用 Pair<int, int> 來存,Pair.first 就會是數字的部分,Pair.second 會是 字母的部分,可以用「字母 – ‘a’ + 1」將字母換成數字,記得要+1因為BFS跑的是 1-Base。

跟普通的 BFS 概念相同,只是不是上下左右走,要用西洋棋的騎士的走法走 BFS,可以宣告一個陣列 int loc[8][2] = {{-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}, {-2, -1}},這些就是騎士的走法,記得不能重複走到相同的點上,可以使用 Map 來紀錄。

可以預設一個 count 變數為 0,每一次重新呼叫 BFS 時就將 count++。當找到終點了就 return count。

 

範例程式碼

 
ZeroJudge Forum