JZOJ5793 小S練跑步 BFS

2022-09-03 04:48:09 字數 1614 閱讀 1393

題目:

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 角,所以一共有兩種型別 和 原點不會有鏡子,任意一點最多只有一面鏡子。鏡子兩個面都能反光,而中間不透光,例如,對於乙個 型鏡子,下方向射入的光線會被反射到右方向,左方向射入的光線會被反射到上方向...