題目鏈結
題目描述
******最近刷題(打遊戲)刷多了,一覺醒來發現自己到了乙個迷宮裡,怎麼也出不去了。這時傳來了一句話,告訴******必須按順序收集完所有的寶石,才能出迷宮。所謂的順序,就是按照每塊寶石上英文本母的順序。迷宮裡面還有一些傳送門,可以傳送到任意乙個另外的傳送門的位置。(你走到乙個不是空地上的地方的時候,就一定會觸發相應事件,不可拒絕,從乙個傳送門傳送到另乙個傳送門不用再次傳送)。每走一步花費乙個單位時間,傳送門到另外乙個傳送門不需要時間。******初始就在字母為a的寶石的位置上(開局一寶石,其他全靠找)。
當******收集完所有寶石的時候就被傳送出迷宮。
******還要趕回去刷題(打遊戲),你們能告訴他最少需要多長時間才能回去嗎?如果不可能出去就輸出impossible。
輸入多組例項,每組輸入乙個n,表示迷宮的大小為n*n (n <= 10)
下面n行每行n個字元
『.』表示空地,
『#』表示牆,不可以通過
『$』表示乙個傳送門
大寫字母表示寶石
輸出每個例項輸出乙個數字,表示最少需要的時間,如果不能逃出迷宮,就輸出impossible。
樣例輸入
5 a….
...b..
.####
c.de.
2 ac
.b2
a#3 a.
….b
樣例輸出
15 3
impossible
2我是用多次的bfs過得,就是先找到b這個寶石,在從b的位置開始bfs,再找下乙個寶石,直到找到最後乙個寶石,注意已經找到寶石的位置要變為空地(因為這裡錯了好幾次),遇到不是當前要找的寶石要當做牆來處理
完整**如下:
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int max_n = 15;
char map[max_n][max_n];
bool used[max_n][max_n];
const
int xx = ;
const
int yy = ;
int n;
struct nodees,be,fi[110];
int top_fi;
char max_ch;
node bfs(node s,char ch)
node nx;
for(int i=0;i<4;i++)}}
if(map[nx.x][nx.y] == '.' || map[nx.x][nx.y] == (ch + 1))}}
return node;
}int main(void)
if(map[i][j] == 'a')
}char ch = 'a';
int res = 0;
node ti = be;
while(ch != max_ch)
else
}if(ch == max_ch)
printf("%d\n",res);
else
printf("impossible\n");
}return
0;}
HAUTOJ 1280 詭異的迷宮
時間限制 2 秒 記憶體限制 128 mb 提交 167 解決 24 題目描述 最近刷題 打遊戲 刷多了,一覺醒來發現自己到了乙個迷宮裡,怎麼也出不去了。這時傳來了一句話,告訴 必須按順序收集完所有的寶石,才能出迷宮。所謂的順序,就是按照每塊寶石上英文本母的順序。迷宮裡面還有一些傳送門,可以傳送到任...
詭異的電梯
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 新的宿舍樓有 n 1 n 100000 層and m 1 m 100000 個學生.在新的宿舍樓裡 為了節約學生的時間也為了鼓勵學生鍛鍊身體 所以規定該宿舍樓裡的電梯在相鄰的兩層之間是不會連續停下 即,如果在第2層停下就不能在第...
詭異的日子
跟u3打交道的日子,你永遠無法體會到他的詭異。本週的最後一天,在結束了一上午的工作,準備下午再搞它一下的時候。美術提了乙個需求 不慎調錯了地形的兩層,土和草地,土在上,草地在下,而且就這樣已經刷了一周了,希望我們能把它們給換過來,換成土在下,草地在上。看到介面上有 保留alpha 的選項,直接就很放...