描述:
給乙個20×20的迷宮、起點座標和終點座標,問從起點是否能到達終點。
輸入:
多個測例。輸入的第一行是乙個整數n,表示測例的個數。接下來是n個測例,每個測例佔21行,第一行四個整數x1,y1,x2,y2是起止點的位置(座標從零開始),(x1,y1)是起點,(x2,y2)是終點。下面20行每行20個字元,』.』表示空格;』x』表示牆。
輸出:
每個測例的輸出佔一行,輸出yes或no。
輸入樣例: 2
0 0 19 19
....................
******************xx
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
0 0 19 19
....................
******************x.
....................
.******************x
....................
******************x.
....................
.******************x
....................
******************x.
....................
.******************x
....................
******************x.
******************x.
******************x.
******************x.
....................
.******************x
....................
輸出樣例: no
yes解題思路:
是根據四個方向不斷的找下去,直到找到或是全部找一遍為止。
**如下:
code:
#include
#include
using
namespacestd;
chardata[21][21];
intstate=0;
voidback(intx1,inty1,intx2,inty2)
,yshift[4]=;//用來控制方向
if(x1==x2&&y1==y2)
data[x1][y1]='*';
for(inti=0;i<4;i++)
back(x1,y1,x2,y2);
} x1=x1-xshift[i];y1=y1-yshift[i];//預設這個方向沒有走下去
} }
intmain()
back(x1,y1,x2,y2);
if(state==1)
else
n--;
} return0;
}
回溯法 迷宮問題
1.首先我們需要自定義乙個迷宮 左上角為入口,右下角為出口,0為路,1為牆 用二維陣列儲存 2.我們在走迷宮之前,首先要確立乙個走的順序,即貪心準則,我們首先試探的方向應該是下,然後是右,上,左 為了確保每乙個格仔都有上下左右,我們需要給我們的迷宮加上一圈牆8 8,變成10 10 3.當我們在乙個格...
回溯法求解迷宮問題
題目 這是我在老師發的ppt上發現的一道題,如下 1表示起點 7表示終點,一共六個路口,每個路口可以通達最多左上右三個路口,不能走的方向用0表示,求從1到7的路徑。求解思路 每個路口最多有三個搜尋分支。把演算法設計為如下的搜尋過程 把整個搜尋分解為向左 向前和向右三個方向上子問題的搜尋。當搜尋到某個...
回溯法求解迷宮問題
最近在leetcode上看了些演算法題,有些看著很簡單的很常用的東西,竟然一下子想不出來怎麼求解,比如說 實現sqrt函式,求陣列的排列。如果高數學的不好,這些看似簡單的問題,第一次碰到也會感覺很難求解,當然了,今天要說的是這樣乙個問題,求解迷宮的所有解,這個問題的求解用到了回溯法的思想,不了解這個...