沼躍魚開啟密碼門後發現門後是乙個像迷宮一樣的房間,牆上的指示牌寫著:房間內某處有一寶箱,但是寶箱被上鎖了,鑰匙在這個房間的某個角落。沼澤魚對寶箱裡有什麼很感興趣,但它必須先去拿到鑰匙才可以開啟寶箱。然而沼躍魚早已看穿了一切,它看清了這個房間的布局,現在給出房間的布局圖,問沼躍魚拿到鑰匙並開啟寶箱最少需要走多少步。沼躍魚每次只能向上、下、左、右中其中乙個方向走一步,但若那個位置是牆時則不能往那個位置走(顯然,沼躍魚不能穿牆)。
輸入的第一行是乙個整數t(0
每組資料的第一行有兩個整數n,m(0
接下來n行,每行有m個字元,『s』表示開始時沼躍魚所處的位置,『#』代表牆,『*』代表空地,『k』代表鑰匙,『b』表示寶箱。鑰匙只有一把。
詳情參看樣例輸入。
對於每組資料,輸出一行包含乙個整數x,x代表沼躍魚拿到鑰匙並開啟寶箱所需的最少步數。若沼躍魚不能夠拿到鑰匙並開啟寶箱(即到達不了鑰匙或寶箱所在處)則輸出-1。
15 6
***#b#
s**#*#
##***#
k#*#*#
***#*#
17對於樣例資料,房間寬5個單位,長6個單位。
從s出發到k需要的最少步數為8,而從k出發到b所需的最少步數為9.
所以答案為8 + 9 = 17.
請使用scanf("%s", s);或cin>> s;來讀取字串以避免出現漏讀多讀的情況。
ac**:
#include #include using namespace std;char a[15][15];
int b[15][15];
int n,m;
int xy[2]=,,,};
struct s
queue[1100];
int bfs(int i,int j,int m1,int m2)
{ int head=0,tail=0,tx,ty,cx,cy,k,sum;
queue[tail].x=i;
queue[tail].y=j;
queue[tail].q=0;
tail++;
b[i][j]=1;
while(head=0&&tx=0&&ty> t;
while(t--)
{cin >> n >> m;
for(i=0;i
然而沼躍魚早就看穿了一切
時間限制 1000ms 單點時限 1000ms 記憶體限制 fjxmlhx每天都在被沼躍魚刷屏,因此他急切的找到了你希望你寫乙個程式遮蔽所有句子中的沼躍魚 marshtomp 不區分大小寫 為了使句子不缺少成分,統一換成 fjxmlhx 輸入包括多行。每行是乙個字串,長度不超過200。一行的末尾與下...
ZSC 1306 沼躍魚早已看穿了一切 題解
題目鏈結 沼躍魚開啟密碼門後發現門後是乙個像迷宮一樣的房間,牆上的指示牌寫著 房間內某處有一寶箱,但是寶箱被上鎖了,鑰匙在這個房間的某個角落。沼澤魚對寶箱裡有什麼很感興趣,但它必須先去拿到鑰匙才可以開啟寶箱。然而沼躍魚早已看穿了一切,它看清了這個房間的布局,現在給出房間的布局圖,問沼躍魚拿到鑰匙並開...
1082 然而沼躍魚早就看穿了一切
1082 然而沼躍魚早就看穿了一切 時間限制 1000ms 單點時限 1000ms 記憶體限制 256mb 描述 fjxmlhx每天都在被沼躍魚刷屏,因此他急切的找到了你希望你寫乙個程式遮蔽所有句子中的沼躍魚 marshtomp 不區分大小寫 為了使句子不缺少成分,統一換成 fjxmlhx 輸入 輸...