總時間限制:
1000ms
記憶體限制:
65536kb
描述 佐助被大蛇丸誘騙走了,鳴人在多少時間內能追上他呢?
已知一張地圖(以二維矩陣的形式表示)以及佐助和鳴人的位置。地圖上的每個位置都可以走到,只不過有些位置上有大蛇丸的手下,需要先打敗大蛇丸的手下才能到這些位置。鳴人有一定數量的查克拉,每乙個單位的查克拉可以打敗乙個大蛇丸的手下。假設鳴人可以往上下左右四個方向移動,每移動乙個距離需要花費1個單位時間,打敗大蛇丸的手下不需要時間。如果鳴人查克拉消耗完了,則只可以走到沒有大蛇丸手下的位置,不可以再移動到有大蛇丸手下的位置。佐助在此期間不移動,大蛇丸的手下也不移動。請問,鳴人要追上佐助最少需要花費多少時間?
輸入輸入的第一行包含三個整數:m,n,t。代表m行n列的地圖和鳴人初始的查克拉數量t。0 < m,n < 200,0 ≤ t < 10
後面是m行n列的地圖,其中@代表鳴人,+代表佐助。*代表通路,#代表大蛇丸的手下。
輸出輸出包含乙個整數r,代表鳴人追上佐助最少需要花費的時間。如果鳴人無法追上佐助,則輸出-1。
樣例輸入
樣例輸入14 4 1#@##**#####+****樣例輸入24 4 2#@##**#####+****樣例輸出
樣例輸出16樣例輸出24朋友給我的一道題,自認為很水,可惜有很多情況沒考慮到,這種型別還是很好的!!!
#include #include#include#includeusing namespace std;
int m,n,t;
char str[210][210];
int cost[210][210];//不可以用vis標記路徑是否走過!必須看當前能量是否大於下一步的能量!!
int dic[2]=,,,};
struct node1
node[100010];
queueq;
void bfs(int x,int y)
if(xx=0&&yy=0&&cost[q2.x][q2.y]>cost[xx][yy])
if(str[xx][yy]=='*')}}
if(flag)
}if(flag)
else
printf("-1\n");
while(!q.empty())
q.pop();
}int main()
{ scanf("%d%d%d",&n,&m,&t);
memset(cost,-1,sizeof(cost));
for(int i=0;i
記錄乙個很奇怪的bug,待解決
乙個很簡單的矩陣求冪模板類的程式,但是在vector temp n,vector n 這一句不能執行,會卡死。下面是完整的 和輸出 方陣的冪運算,n n 矩陣的m次冪 1 使用類進行封裝 2 使用c 操作符過載 可選 3 使用模板 可選 你必須定義乙個 main 函式入口。include inclu...
BFS的乙個題
關於 bfs要點 1 若為可化為的座標系圖形,可用結構體儲存其x值,y值和步數。一般開now 和 next now用於取出佇列裡面的結構體 next用於上下左右的運動計算,並且push到佇列中。2 在運用佇列時,常用的函式 push,front,size,empty,pop 等等 特別是在front...
乙個很奇怪的問題
if equipmentlist.size 0 string equipidarray new string 3 for int i 0 i equipmentlist.size i element equipment element equipmentlist.get i string equip...