題目:
p.s.本蒟蒻的語文不好,對於很難簡化的題目起不到什麼簡化所用。各位dalao就看題目吧qwq
正題:很裸的廣搜啊。。。
對於乙個點,向四個方向搜,直到遇到不能走的位置在停下。
例如:
就往四個方向列舉,直到四個方向都走到底為止。
那麼上圖能走的(能轉移的)被標記成紅色就是:
這也就是和普通廣搜的區別吧。。。
其實很像最小拐彎問題吧。
還有,這道題的vis
vis陣列也會有乙個小變化。當我們搜到乙個點(x,
y)(x
,y)的v
is[x
][y]
=tru
evis
[x][
y]=t
rue時,不要立刻bre
akbr
eak,因為可能會遇到如下情況:
藍色的塊從綠色的塊轉移來,vis
vis已經被標記。
我們現在要從紅色點往右搜,那麼
當我們搜到(3,
3)(3
,3)時,如果直接退出,不繼續往後搜,那麼就會導致(3,
4)(3
,4)的本來應該搜到的格仔無法搜到。
所以就應該直接跳過已被標記的格仔,直接跳到下乙個
注意終點(n,
m)(n
,m)也有可能是s
s。但是這種情況還是算可以到達的。記得先將終點的s
s去掉。
#include #include #include #include #include #define n 510
using namespace std;
const int dx=;
const int dy=;
const char way=; //四個方向
int n,m;
char c[n][n];
bool vis[n][n];
void bfs()}}
x.pop();
y.pop();
dis.pop();
} printf("no solution");
return;
} int main()
for (int i=1;i<=n;i++)
cin>>c[i]+1;
c[n][m]=' ';
bfs();
return 0;
}
搜尋 JZOJ 5793 小s練跑步
乙個n m n times m n m的矩陣,上面有些字母,每個字母代表了不能往那個方向走,如果上面是s ss,那麼走到那裡就不能動了,求從 1,1 走到 n,m 的最少拐彎次數。廣搜。乙個方向乙個方向的拓展,直到不能走為止。include include using namespace std c...
JZOJ4823 小W學物理
為了測試小w的物理水平,mr.x在二維座標系中放了n面鏡子 鏡子座標絕對值不超過m 鏡子均與座標軸成45 角,所以一共有兩種型別 和 原點不會有鏡子,任意一點最多只有一面鏡子。鏡子兩個面都能反光,而中間不透光,例如,對於乙個 型鏡子,下方向射入的光線會被反射到右方向,左方向射入的光線會被反射到上方向...
JZOJ 4823 小W學物理
為了測試小w的物理水平,mr.x在二維座標系中放了n面鏡子 鏡子座標絕對值不超過m 鏡子均與座標軸成45 角,所以一共有兩種型別 和 原點不會有鏡子,任意一點最多只有一面鏡子。鏡子兩個面都能反光,而中間不透光,例如,對於乙個 型鏡子,下方向射入的光線會被反射到右方向,左方向射入的光線會被反射到上方向...