NOI2 5 1792 迷宮 題解

2021-10-05 12:19:57 字數 1379 閱讀 3460

1792:迷宮

總time limit: 3000ms memory limit: 65536kb

description

一天extense在森林裡探險的時候不小心走入了乙個迷宮,迷宮可以看成是由n* n的格點組成,每個格點只有2種狀態,.和#,前者表示可以通行後者表示不能通行。同時當extense處在某個格點時,他只能移動到東南西北(或者說上下左右)四個方向之一的相鄰格點上,extense想要從點a走到點b,問在不走出迷宮的情況下能不能辦到。如果起點或者終點有乙個不能通行(為#),則看成無法辦到。

input

第1行是測試資料的組數k,後面跟著k組輸入。每組測試資料的第1行是乙個正整數n (1 <= n <= 100),表示迷宮的規模是n * n的。接下來是乙個n * n的矩陣,矩陣中的元素為.或者#。再接下來一行是4個整數ha, la, hb, lb,描述a處在第ha行, 第la列,b處在第hb行, 第lb列。注意到ha, la, hb, lb全部是從0開始計數的。

output

k行,每行輸出對應乙個輸入。能辦到則輸出「yes」,否則輸出「no」。

樣例輸入輸出作者在這裡不提供

這一題乍一看是不是可以用流感傳染的做法一樣捏,輸入之後先把起始位置標成0,之後像流感傳染一樣向外擴散就ok了,最後判斷一下終點是否被"傳染"了。是的話輸出yes,否則輸出no。

#include

using

namespace std;

char s1[

128]

[128];

intmain()

scanf

("%d%d%d%d"

,&a[0]

,&a[1]

,&a[2]

,&a[3]

);if(s1[a[0]

][a[1]

]=='#')

else

if(s1[a[2]

][a[3]

]=='#')

else

if(i1&&s1[i+1]

[j]==

'.')

if(j>

0&&s1[i]

[j-1]==

'.')

if(j1&&s1[i]

[j+1]==

'.')}}

}if(s1[a[2]

][a[3]

]==' ')

for(

int i=

0;i}int i,j;

for(i=

0;iif(j(i(s1[a[2]

][a[3]

]==' ')

else}}

return0;

}

NOI題庫2 5 6264 走出迷宮

描述 當你站在乙個迷宮裡的時候,往往會被錯綜複雜的道路弄得失去方向感,如果你能得到迷宮地圖,事情就會變得非常簡單。假設你已經得到了乙個n m的迷宮的圖紙,請你找出從起點到出口的最短路。輸入 第一行是兩個整數n和m 1 n,m 100 表示迷宮的行數和列數。接下來n行,每行乙個長為m的字串,表示整個迷...

NOI 7084 迷宮問題

描述 定義乙個二維陣列表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。輸入 乙個5 5的二維陣列,表示乙個迷宮。資料保證有唯一解。輸出 左上角到右下角的最短路徑 隔壁的走迷宮記個前驅 include include us...

NOI 7084 迷宮問題

題目鏈結 題解 簡單的bfs問題,尋找最短路使用bfs tips 列印路徑從終點開始找路,每次儲存父節點,則從起點可以列印路徑 include include using namespace std bool visi 5 5 int matrix 5 5 fa 5 5 int position 4...