總時間限制: 1000ms 記憶體限制: 65536kb
描述
公主被惡人抓走,被關押在牢房的某個地方。牢房用n*m (n, m <= 200)的矩陣來表示。矩陣中的每項可以代表道路(@)、牆壁(#)、和守衛(x)。
英勇的騎士(r)決定孤身一人去拯救公主(a)。我們假設拯救成功的表示是「騎士到達了公主所在的位置」。由於在通往公主所在位置的道路中可能遇到守衛,騎士一旦遇到守衛,必須殺死守衛才能繼續前進。
現假設騎士可以向上、下、左、右四個方向移動,每移動乙個位置需要1個單位時間,殺死乙個守衛需要花費額外的1個單位時間。同時假設騎士足夠強壯,有能力殺死所有的守衛。
給定牢房矩陣,公主、騎士和守衛在矩陣中的位置,請你計算拯救行動成功需要花費最短時間。
輸入
第一行為乙個整數s,表示輸入的資料的組數(多組輸入)
隨後有s組資料,每組資料按如下格式輸入
1、兩個整數代表n和m, (n, m <= 200).
2、隨後n行,每行有m個字元。"@"代表道路,"a"代表公主,"r"代表騎士,"x"代表守衛, "#「代表牆壁。
輸出
如果拯救行動成功,輸出乙個整數,表示行動的最短時間。
如果不可能成功,輸出"impossible」
樣例輸入
樣例輸出137
我用了記憶化搜尋,能求出第乙個例子,但沒法ac,求大佬看看哪的問題
#include
#include
#include
using
namespace std;
int s;
int n, m;
char mg[
210]
[210];
//迷宮
int v[
210]
[210];
//判斷陣列
int rx, ry;
//起點
int dx[4]
=;int dy[4]
=;int ds[
210]
[210];
// 某點到終點最小距離
intdfs
(int x,
int y)}}
if(mg[x]
[y]==
'x') ds[x]
[y]= temp +2;
else ds[x]
[y]= temp +1;
return ds[x]
[y];
}int
main()
}}v[rx]
[ry]=1
;int ans =
dfs(rx, ry);if
(ans >=
1<<
30) cout <<
"impossible"
<< endl;
else cout << ans << endl;
}return0;
}
求助臨時表怎麼鏈結查詢呀
常規的多條件查詢可以寫成這樣 set rs server.createobject adodb.recordset if fl1 0 then sql select from tuku where img if fl2 0 and fl2 then sql sql and kj fl2 if fl3...
arcgis自動完成面怎麼用 農業自動氣象站怎麼用
農業氣象站 agricultural meteorological station 是一種能自動地觀測與儲存氣象觀測資料的裝置,其主要功能是實時監測風 溫度 濕度 氣壓 草溫等氣象要素以及土壤含水量的資料變化。當今,自動農業氣象站有多種型別,但結構基本相同,主要由感測器 採集器 系統電源 通訊介面及...
arcgis自動完成面怎麼用 半自動咖啡機怎麼用?
半自動咖啡機怎麼用?半自動咖啡機 需要另外用專門的磨豆機將咖啡豆研磨成粉,人工調整粉粒的粗細 份量和咖啡機的水溫等 還需要人工將適量的咖啡粉填充進手柄中的粉碗裡,然後手工壓實,裝上咖啡機進行萃取,得到一杯espresso。在此過程中,任何一點變化都可以讓每次做出來的咖啡的風味都不一樣,所以比較考驗操...