演算法提高 學霸的迷宮 藍橋杯訓練

2021-07-30 04:46:40 字數 1941 閱讀 5247

如有錯誤歡迎大神指出!!

演算法提高 學霸的迷宮  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功,他為了節約時間,從線人那裡搞到了迷宮的地圖,準備提前計算最短的路線。可是他現在正向妹子解釋這件事情,於是就委託你幫他找一條最短的路線。

輸入格式

第一行兩個整數n, m,為迷宮的長寬。

接下來n行,每行m個數,數之間沒有間隔,為0或1中的乙個。0表示這個格仔可以通過,1表示不可以。假設你現在已經在迷宮座標(1,1)的地方,即左上角,迷宮的出口在(n,m)。每次移動時只能向上下左右4個方向移動到另外乙個可以通過的格仔裡,每次移動算一步。資料保證(1,1),(n,m)可以通過。

輸出格式

第一行乙個數為需要的最少步數k。

第二行k個字元,每個字元∈,分別表示上下左右。如果有多條長度相同的最短路徑,選擇在此表示方法下字典序最小的乙個。

樣例輸入

input sample 1:

3 3001

100110

input sample 2:

3 3000

000000

樣例輸出

output sample 1: 4

rdrd

output sample 2: 4

ddrr

資料規模和約定

有20%的資料滿足:1<=n,m<=10

有50%的資料滿足:1<=n,m<=50

有100%的資料滿足:1<=n,m<=500。

中文題目,就不解釋了。

題解:一道簡單的bfs的題目,有個考點估計就是記錄走的順序並且多條選擇要選擇字典序小的。

跟杭電有道題目感覺類似。

ac code:

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define si1(a) scanf("%d",&a)

#define si2(a,b) scanf("%d%d",&a,&b)

#define sd1(a) scanf("%lf",&a)

#define sd2(a,b) scanf("%lf%lf",&a,&b)

#define ss1(s) scanf("%s",s)

#define pi1(a) printf("%d\n",a)

#define pi2(a,b) printf("%d %d\n",a,b)

#define mset(a,b) memset(a,b,sizeof(a))

#define forb(i,a,b) for(int i=a;iq;

now.x=1,now.y=1;

q.push(now);

vis[now.x][now.y]=1;

now.step=0;

while(!q.empty())

else if(fangxiang[i][0]==-1&&fangxiang[i][1]==0)

else if(fangxiang[i][0]==0&&fangxiang[i][1]==1)

else

if(next.x==n&&next.y==m)

else}}

}}int main()

bfs();

printf("%d\n%s\n",next.step,next.zoufa);

return 0;

}

演算法提高 學霸的迷宮 藍橋杯

問題描述 學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功,他為了節約時間,從線人那裡搞到了迷宮的地圖,準備提前計算最短的路線。可是他現在正向妹子解釋...

演算法提高 學霸的迷宮(藍橋杯)

問題描述 學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功,他為了節約時間,從線人那裡搞到了迷宮的地圖,準備提前計算最短的路線。可是他現在正向妹子解釋...

藍橋杯 演算法提高 學霸的迷宮

問題描述 學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功,他為了節約時間,從線人那裡搞到了迷宮的地圖,準備提前計算最短的路線。可是他現在正向妹子解釋...