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...