time limit:
2000ms memory limit:
65536kb
total submit:
28 accepted:
10 page view:
806submit
status
discuss
description
機械人要在乙個矩形迷宮裡行動(不能原地停留,只能走向上/下/左/右),每移動一格花費1個單位時間。迷宮有以下幾種元素:
【*】 機械人的起點
【#】 牆。機械人不能走過這些格仔
【.】 平地。機械人可以在上面自由行走
【0-9】 寶藏。當機械人走到此處會立刻獲得該數字相應的寶藏,寶藏不會消失,可以反覆獲取(但不能停留)
若機械人要恰好獲得總和為x的寶藏,它最少需要多少時間?
input
第一行輸入任務數量t, 接下來有t個任務每塊第一行有兩個整數, n( < 100), m( < 100), 表示迷宮有n+1行和m+1列,輸出迷宮地圖。
最後一行輸入你要收集的寶藏的總價值x(x ≤ 100)
output
對於每個任務,輸出最少花費的時間,如果完成不了該任務則輸出-1
32 31.#2
#..#
*.#.
32 3
2.#2
#..#
*.#.
52 3
2.#2
#.3#
*.#.
5
8-16
tag
bfs優先佇列
一道比較需要三維標記的bfs,因為除牆以外的其他點都可以任意訪問多次,所以需要三維標記vis[x][y][val],前兩維是座標,最後一維是訪問該點時所擁有的寶藏,當擁有不同的寶藏時可以訪問同乙個點。
#include #include#include#includeusing namespace std;
int vis[105][105][105];
char a[105][105];
int c[4][2]=;
struct l
;int main()}}
scanf("%d",&xx);
int fg=0;
while(!q.empty())
if(now.val>xx) continue; //當寶藏的值已經大於需要值時就不用再壓入其他點了,佇列中所剩的點都是大於需要時,佇列會壓空,最後結束迴圈
for(int i=0;i<4;i++)}}
}if(fg==0)
printf("-1\n");
}return 0;
}
swust 1646 迷宮與寶藏
機械人要在乙個矩形迷宮裡行動 不能原地停留,只能走向上 下 左 右 每移動一格花費1個單位時間。迷宮有以下幾種元素 機械人的起點 牆。機械人不能走過這些格仔 平地。機械人可以在上面自由行走 0 9 寶藏。當機械人走到此處會立刻獲得該數字相應的寶藏,寶藏不會消失,可以反覆獲取 但不能停留 若機械人要恰...
HLG 1286 迷宮與寶藏 廣搜
description 機械人要在乙個矩形迷宮裡行動 不能原地停留,只能走向上 下 左 右 每移動一格花費1個單位時間。迷宮有以下幾種元素 機械人的起點 牆。機械人不能走過這些格仔 平地。機械人可以在上面自由行走 0 9 寶藏。當機械人走到此處會立刻獲得該數字相應的寶藏,寶藏不會消失,可以反覆獲取 ...
XDOJ 分配寶藏
問題描述 兩個尋寶者找到乙個寶藏,裡面包含n件物品,每件物品的價值分別是w 0 w 1 w n 1 suma代表尋寶者a所獲物品價值總和,sumb代表尋寶者b所獲物品價值總和,請問怎麼分配才能使得兩人所獲物品價值總和差距最小,即兩人所獲物品價值總和之差的絕對值 suma sumb 最小。輸入說明 輸...