小明的養生茶 根據拯救公主改編

2021-09-11 09:03:55 字數 1038 閱讀 1226

說實話這道題折磨了我一下午,最後問了一下ym大佬和zx大佬才解決。 但是也是通過這一題才了解了優先佇列。

小明剛剛製作好的養生茶被壞同學偷偷的放在了迷宮裡的乙個地方。

迷宮用n*m​的矩陣表示(​n,m<=100)矩陣中的每項可以代表道路(』@』),牆壁(』#』)和高數題(『x』)年輕的小明(『r』)決定去尋找他的養生茶(『a』),由於壞同學在路上放了很多高數題,小明必須解決高數題後才能繼續前進,每移動乙個位置需要花費1個單位時間,做出一道高數題也需要1個單位時間,同時小明非常聰明,能做出所有的高數題。

給定迷宮,養生茶,小明和高數題的位置,計算找到養生茶所需要的最短時間。

第一行t,表示有t組資料

每組資料有n,m,代表迷宮行和列

迷宮中』@'代表道路,'a』代表養生茶,'r』代表小明,『x』代表高數題,』#'代表牆壁

如果小明能找到他的養生茶,輸出行動所需最短時間,否則輸出impossible

看似是一道簡單的bfs題,但是其實……坑挺多的。首先這是一道最短時間題不是最短路徑題。『x』需要2個單位的時間,其餘的需要1個單位。如果是普通的佇列的話,當下一步遇到兩者時可能先把』x』加入佇列(理應先把』a』和』@『加入),這樣耗時就不是最短的了。所以這時候用到優先佇列,把用時最少的放在隊首。

我做這道題的時候還遇到了乙個坑就是沒有考慮到』a』。到』a』也算是用時乙個單位!!!

#includeusing namespace std;

int m,n;

struct node

node(int xx,int yy, int step1):x(xx),y(yy),step(step1){}

};int b[4][2]=;

char a[1000][1000];

int v[1000][1000];

void bfs(int x1,int y1,int x2,int y2)

if(a[i][j]=='a')

}bfs(startx,starty,endx,endy);

} return 0;

}

電腦族養生茶 枸杞菊花決明子茶

將枸杞子20克,菊花5克,決明子30克洗淨後,放入杯中,用沸水中泡,加蓋燜10分鐘即成。可代茶頻飲。可沖泡3 5次。按語 養陰平肝,適於陰虛陽亢引起的經前頭痛。杞菊決明子茶 原料 枸杞子10克,菊花3克,決明子20克。制法 將枸杞子 菊花 決明子同時放入較大的有蓋杯中,用沸水沖泡,加蓋,悶15分鐘後...