亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

hdu1044【bfs+dfs】

2019-11-10 20:12:16
字體:
來源:轉載
供稿:網友

Collect More Jewels

Time Limit: 2000/1000 MS (java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7334 Accepted Submission(s): 1705

PRoblem Description It is written in the Book of The Lady: After the Creation, the cruel god Moloch rebelled against the authority of Marduk the Creator.Moloch stole from Marduk the most powerful of all the artifacts of the gods, the Amulet of Yendor, and he hid it in the dark cavities of Gehennom, the Under World, where he now lurks, and bides his time.

Your goddess The Lady seeks to possess the Amulet, and with it to gain deserved ascendance over the other gods.

You, a newly trained Rambler, have been heralded from birth as the instrument of The Lady. You are destined to recover the Amulet for your deity, or die in the attempt. Your hour of destiny has come. For the sake of us all: Go bravely with The Lady!

If you have ever played the computer game NETHACK, you must be familiar with the quotes above. If you have never heard of it, do not worry. You will learn it (and love it) soon.

In this problem, you, the adventurer, are in a dangerous dungeon. You are informed that the dungeon is going to collapse. You must find the exit stairs within given time. However, you do not want to leave the dungeon empty handed. There are lots of rare jewels in the dungeon. Try collecting some of them before you leave. Some of the jewels are cheaper and some are more expensive. So you will try your best to maximize your collection, more importantly, leave the dungeon in time.

Input Standard input will contain multiple test cases. The first line of the input is a single integer T (1 <= T <= 10) which is the number of test cases. T test cases follow, each preceded by a single blank line.

The first line of each test case contains four integers W (1 <= W <= 50), H (1 <= H <= 50), L (1 <= L <= 1,000,000) and M (1 <= M <= 10). The dungeon is a rectangle area W block wide and H block high. L is the time limit, by which you need to reach the exit. You can move to one of the adjacent blocks up, down, left and right in each time unit, as long as the target block is inside the dungeon and is not a wall. Time starts at 1 when the game begins. M is the number of jewels in the dungeon. Jewels will be collected once the adventurer is in that block. This does not cost extra time.

The next line contains M integers,which are the values of the jewels.

The next H lines will contain W characters each. They represent the dungeon map in the following notation:

[*] marks a wall, into which you can not move; [.] marks an empty space, into which you can move; [@] marks the initial position of the adventurer; [<] marks the exit stairs; [A] - [J] marks the jewels.

Output Results should be directed to standard output. Start each case with “Case #:” on a single line, where # is the case number starting from 1. Two consecutive cases should be separated by a single blank line. No blank line should be produced after the last test case.

If the adventurer can make it to the exit stairs in the time limit, print the sentence “The best score is S.”, where S is the maximum value of the jewels he can collect along the way; otherwise print the Word “Impossible” on a single line.

Sample Input 3

4 4 2 2 100 200


@A B<


4 4 1 2 100 200


@A B<


12 5 13 2 100 200


B……… .***.* @…A….<


Sample Output Case 1: The best score is 200.

Case 2: Impossible

Case 3: The best score is 300.

一個迷宮,L時間后倒塌,里面有M個寶藏。問能否逃出,如果逃出,得到的最大價值是多少? 寶藏由大寫字母【A】~【J】表示,‘*’表示墻,‘.’表示路,‘@’表示起點,‘<’表示出口。 題解: 寶藏最多十個,可以bfs找出寶藏,起點,出口相互之間的最短距離,然后dfs搜索最大能獲得的價值。 剪枝:ans==Max,已經搜到獲得最大價值 代碼:

#include <iostream>#include <string>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>#include <algorithm>#include <queue>#include <map>#define MST(s,q) memset(s,q,sizeof(s))#define INF 0x3f3f3f3f#define MAXN 9999using namespace std;struct Node{ int x, y; int sum;} s, u, v;int W, H, L, M, ans, Max; // Max保存所有寶藏價值的和char Map[100][100];int move_x[4] = {1, -1, 0, 0}, move_y[4] = {0, 0, 1, -1};int value[11];int path[20][20]; // 保存(起點,終點,各寶藏 ) 它們直接的最短距離,最多bfs地圖十幾次bool vis[100][100];bool visited[20];// 求kind到其他點的距離void bfs(int x, int y, int kind) // kind==0 表示起點,kind==M+1表示終點,1-M表示寶藏{ queue<Node> Q; s.x = x, s.y = y, s.sum = 0; MST(vis, 0); Q.push(s); vis[x][y] = 1; while (!Q.empty()) { u = Q.front(); Q.pop(); for (int i = 0; i < 4; i++) { v.x = u.x + move_x[i], v.y = u.y + move_y[i]; if (v.x >= 0 && v.x < H && v.y >= 0 && v.y < W && !vis[v.x][v.y] && Map[v.x][v.y] != '*') { vis[v.x][v.y] = 1; v.sum = u.sum + 1; if (Map[v.x][v.y] != '.') { if (Map[v.x][v.y] == '@') path[kind][0] = v.sum; else if (Map[v.x][v.y] == '<') path[kind][M + 1] = v.sum; else path[kind][Map[v.x][v.y] - 'A' + 1] = v.sum; } Q.push(v); } } }}// kind表示當前節點,time表花費的時間,V表價值void dfs(int kind , int time, int V) // kind==0 表示起點,kind==M+1表示終點,其他表示寶藏{ if (time > L || ans == Max) return; // 超出時間或已經得到最大價值 if (kind == M + 1) { ans = max(ans, V); return; } for (int i = 1; i <= M + 1; i++) { if (!visited[i]) { visited[i] = 1; dfs(i, time + path[kind][i], V + value[i - 1]); visited[i] = 0; } }}int main(){ int T, sx, sy, icase = 1; cin >> T; while (T--) { cin >> W >> H >> L >> M; Max = 0; for (int i = 0; i < M; i++) { scanf("%d", &value[i]); Max += value[i]; } value[M] = 0; for (int i = 0; i < H; i++) scanf("%s", Map[i]); MST(path, INF); // 把距離初始為最大 for (int i = 0; i < H; i++) for (int j = 0; j < W; j++) { if (Map[i][j] == '@') bfs(i, j, 0); else if (Map[i][j] == '<')bfs(i, j, M + 1); else if (Map[i][j] >= 'A' && Map[i][j] <= 'J') bfs(i, j, Map[i][j] - 'A' + 1); } MST(visited, 0); visited[0] = 1; ans = -1; dfs(0, 0, 0); printf("Case %d:/n", icase++); if (ans != -1) printf("The best score is %d./n", ans); else printf("Impossible/n"); if (T) printf("/n"); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线视频一区| 久久91亚洲人成电影网站| 日韩精品免费在线视频| 日韩电影中文字幕在线| 国内精品久久久久久影视8| 欧美成人精品在线观看| 亚洲欧美制服综合另类| 欧美国产视频日韩| 日本精品一区二区三区在线| 欧美伊久线香蕉线新在线| 欧美老女人在线视频| 欧洲永久精品大片ww免费漫画| 精品久久久久久久久久久| 国产精品夜色7777狼人| 国产精品视频自拍| 亚洲字幕在线观看| 欧美成人剧情片在线观看| 久久97精品久久久久久久不卡| 亚洲综合在线播放| 欧美日韩国产麻豆| 亚洲电影免费观看高清完整版在线| 2019日本中文字幕| 97av视频在线| 亚洲男人天堂2024| 日韩精品中文字幕有码专区| 欧美日韩xxxxx| 日韩电影免费在线观看中文字幕| 久久久精品免费视频| 欧美视频在线免费看| 中文字幕欧美在线| 日本aⅴ大伊香蕉精品视频| 欧美性20hd另类| 久久久亚洲天堂| 国产精品久久久亚洲| 日本亚洲精品在线观看| 亚洲精品99久久久久| 日韩精品免费综合视频在线播放| 国语自产在线不卡| 中文字幕精品久久久久| 国产69久久精品成人看| www.日本久久久久com.| 奇米成人av国产一区二区三区| 91美女高潮出水| 精品久久久久久久久国产字幕| 欧美裸体xxxx| 精品国产999| 少妇精69xxtheporn| 成人在线一区二区| 美女av一区二区三区| 69av在线播放| 91av视频在线| 黑人狂躁日本妞一区二区三区| 国产精品一区二区女厕厕| 日韩精品视频在线免费观看| 98精品国产高清在线xxxx天堂| 日韩精品亚洲元码| 中文字幕亚洲欧美日韩在线不卡| www日韩中文字幕在线看| 久久久久久久久久久网站| 亚洲欧美色婷婷| 日韩欧中文字幕| 在线午夜精品自拍| 久久国产精彩视频| 欧美激情第6页| 在线免费看av不卡| 国产一区二区在线免费视频| 日日狠狠久久偷偷四色综合免费| 欧美诱惑福利视频| 最新69国产成人精品视频免费| 少妇高潮久久久久久潘金莲| 国产精品27p| 国产精品扒开腿做爽爽爽男男| 中文字幕日韩欧美精品在线观看| 日韩av色综合| 一区二区三区回区在观看免费视频| 国产日韩欧美一二三区| 美女福利视频一区| 另类天堂视频在线观看| 欧美精品videos| 97精品视频在线观看| 精品动漫一区二区三区| 久久综合亚洲社区| 亚洲欧洲午夜一线一品| 精品国产一区二区三区久久| 国产精品免费观看在线| 欧美巨乳美女视频| 97香蕉久久超级碰碰高清版| 人人爽久久涩噜噜噜网站| 国产精品入口免费视| 粉嫩av一区二区三区免费野| 亚洲色图美腿丝袜| 中文字幕在线亚洲| 国内成人精品视频| 久久久久久高潮国产精品视| 亚洲直播在线一区| 国产综合久久久久| 亚洲精品国产综合区久久久久久久| 一区二区三区回区在观看免费视频| 色999日韩欧美国产| 国产视频自拍一区| 欧美电影在线观看完整版| 中文字幕亚洲综合久久筱田步美| 国产精品亚洲аv天堂网| 欧美日韩另类字幕中文| 亚洲精品久久在线| 国产精品高潮呻吟久久av无限| 成人中文字幕在线观看| 国产视频久久久| 亚洲精品丝袜日韩| 亚洲色图在线观看| 亚洲国产成人精品一区二区| 激情亚洲一区二区三区四区| 国外成人在线播放| 色久欧美在线视频观看| 亚洲人成电影网站| 久久亚洲国产精品成人av秋霞| 日韩www在线| 欧美一级成年大片在线观看| 亚洲国产精品va在线看黑人动漫| 欧美精品久久久久久久免费观看| 久久伊人精品视频| 亚洲欧美国产一区二区三区| 97色在线观看| 91香蕉亚洲精品| 亚洲美女av在线播放| 日韩欧美在线观看| 亚洲日本中文字幕免费在线不卡| 国产在线a不卡| 精品福利一区二区| 91亚洲精品一区二区| 国产精品揄拍500视频| 亚洲图中文字幕| 97精品视频在线| 亚洲成年网站在线观看| 国产精品久久久久久搜索| 色噜噜国产精品视频一区二区| 日本欧美黄网站| 亚州国产精品久久久| 欧美日在线观看| 18一19gay欧美视频网站| 狠狠干狠狠久久| 久久91精品国产| 日韩精品中文字幕在线播放| 色先锋久久影院av| 久久久久久久成人| 国产精品99久久久久久www| 国产日本欧美一区二区三区在线| 欧美日韩国产精品专区| 亚洲最大av网| 欧美大尺度电影在线观看| 久久久久久久久久久免费| 亚洲视频电影图片偷拍一区| 国产日韩欧美电影在线观看| 97视频国产在线| 日韩av在线影视| 国产精品美乳在线观看| 亚洲成人激情在线观看| 中文字幕在线看视频国产欧美在线看完整| 国内精品一区二区三区| 色一情一乱一区二区| 成人高h视频在线| 国产精品嫩草影院久久久| 国产精品va在线播放| 亚洲欧美中文在线视频|