資訊學奧賽一本通 1256 獻給阿爾吉儂的花束

2021-09-07 13:48:09 字數 1393 閱讀 1744

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 1696     通過數: 685 

阿爾吉儂是乙隻聰明又慵懶的小白鼠,它最擅長的就是走各種各樣的迷宮。今天它要挑戰乙個非常大的迷宮,研究員們為了鼓勵阿爾吉儂盡快到達終點,就在終點放了一塊阿爾吉儂最喜歡的乳酪。現在研究員們想知道,如果阿爾吉儂足夠聰明,它最少需要多少時間就能吃到乳酪。

迷宮用乙個r×c的字元矩陣來表示。字元s表示阿爾吉儂所在的位置,字元e表示乳酪所在的位置,字元#表示牆壁,字元.表示可以通行。阿爾吉儂在1個單位時間內可以從當前的位置走到它上下左右四個方向上的任意乙個位置,但不能走出地圖邊界。

第一行是乙個正整數t(1 ≤ t ≤ 10),表示一共有t組資料。

每一組資料的第一行包含了兩個用空格分開的正整數r和c(2 ≤ r, c ≤ 200),表示地圖是乙個r×c的矩陣。

接下來的r行描述了地圖的具體內容,每一行包含了c個字元。字元含義如題目描述中所述。保證有且僅有乙個s和e。

對於每一組資料,輸出阿爾吉儂吃到乳酪的最少單位時間。若阿爾吉儂無法吃到乳酪,則輸出「oop!」(只輸出引號裡面的內容,不輸出引號)。每組資料的輸出結果佔一行。

3

3 4.s..

###.

..e.

3 4.s..

.e..

....

3 4.s..

####

..e.

5

1oop!

知道起點和終點的題,很明顯是寬搜題,我很細心地做,同桌問我題目,我就六親不認

不說話,用寬搜能很輕鬆地得到結果,你也能改改迷宮問題(noi)或迷宮問題(一本通),我就只改了一點,用腳指頭想想

很快就做出來了,阿爾吉儂會感謝我們的(阿爾吉儂:花束!花束!說好的給我花束呢?!

),下面是我的**,為了照顧廣大萌新(其實我就是萌新

),我沒有用queue函式之類的高階東西(我也寫不出來

):

#includeusing namespace std;

int front,rear,r,c,dx[4]=,dy[4]=,q[100010][3],lx,ly,mx,my;

char a[210][210];

void bfs();

int main()

front=0,rear=1;

q[rear][0]=lx,q[rear][1]=ly,q[rear][2]=0;

a[lx][ly]=1;

bfs();

if(q[rear][2]>=0)

cout<=1&&xx<=r&&yy>=1&&yy<=c&&a[xx][yy]!='#')

}} }

if(!find)

}

下期題目傳送門:最少步數(大家先做著哈)

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...

資訊學奧賽一本通 小球(drop)

this drop is gonna last forever!許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個...

資訊學奧賽一本通(C 版)

資訊學奧賽一本通 c 版 總目錄 1.資訊學奧賽一本通 c 版 刷題 記錄 2.資訊學奧賽一本通 c 版 第一部分 c 語言 第一章 c 語言入門 3.資訊學奧賽一本通 c 版 第一部分 c 語言 第二章 順序結構程式設計 4.資訊學奧賽一本通 c 版 第一部分 c 語言 第三章 程式的控制結構 5...