可以參考我的另一篇部落格。
2020/8/12日的華為筆試出了一道筆試迷宮問題的改版,題目大致的意思如下:
有一條剛貼地磚的路,強迫症小明走路每次走的步長一樣,並且只走貼了地磚的地方,如果用1代表貼了地磚,用0代表沒有地磚,問小明能否從左上角出發走到終點右下角。
例題:輸入
235
1010
0000
1000
101
輸出
true
其中2是步長,即小明一次走兩步,3和5分別代表行數和列數。下面3行5列是代表有地磚和沒有地磚。小明只要按照(0,0),(0,2),(2,2),(2,4)的路線就可以走到終點。
這裡的**不僅能確定小明能否走到終點,而且能計算一共有幾種走的方式。具體看下面的**。
//經典的回溯法
//華為面試:走迷宮
#include
using
namespace std;
int path[3]
[5]=
,,};
int step =1;
int rowout =3;
int colout =5;
int way =0;
bool
feasible
(int row,
int col)
void
getpath
(int row,
int col)
elseif(
feasible
(row + step, col))}
}int
main()
}getpath(0
,0);
if(way>0)
cout <<
"ok! way="
<< way << endl;
else
cout <<
"false!"
<< endl;
system
("pause");
return0;
}
回溯法 迷宮問題
1.首先我們需要自定義乙個迷宮 左上角為入口,右下角為出口,0為路,1為牆 用二維陣列儲存 2.我們在走迷宮之前,首先要確立乙個走的順序,即貪心準則,我們首先試探的方向應該是下,然後是右,上,左 為了確保每乙個格仔都有上下左右,我們需要給我們的迷宮加上一圈牆8 8,變成10 10 3.當我們在乙個格...
迷宮問題 回溯法
描述 給乙個20 20的迷宮 起點座標和終點座標,問從起點是否能到達終點。輸入 多個測例。輸入的第一行是乙個整數n,表示測例的個數。接下來是n個測例,每個測例佔21行,第一行四個整數x1,y1,x2,y2是起止點的位置 座標從零開始 x1,y1 是起點,x2,y2 是終點。下面20行每行20個字元,...
回溯法求解迷宮問題
題目 這是我在老師發的ppt上發現的一道題,如下 1表示起點 7表示終點,一共六個路口,每個路口可以通達最多左上右三個路口,不能走的方向用0表示,求從1到7的路徑。求解思路 每個路口最多有三個搜尋分支。把演算法設計為如下的搜尋過程 把整個搜尋分解為向左 向前和向右三個方向上子問題的搜尋。當搜尋到某個...