麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Battle City

2019-11-14 10:10:32
字體:
供稿:網(wǎng)友

Description

Many of us had played the game “Battle city” in our childhood, and some people (like me) even often play it on computer now.

What we are discussing is a simple edition of this game. Given a map that consists of empty spaces, rivers, steel walls and brick walls only. Your task is to get a bonus as soon as possible suppose that no enemies will disturb you (See the following picture).

Your tank can’t move through rivers or walls, but it can destroy brick walls by shooting. A brick wall will be turned into empty spaces when you hit it, however, if your shot hit a steel wall, there will be no damage to the wall. In each of your turns, you can choose to move to a neighboring (4 directions, not 8) empty space, or shoot in one of the four directions without a move. The shot will go ahead in that direction, until it go out of the map or hit a wall. If the shot hits a brick wall, the wall will disappear (i.e., in this turn). Well, given the description of a map, the positions of your tank and the target, how many turns will you take at least to arrive there?

Input

The input consists of several test cases. The first line of each test case contains two integers M and N (2 <= M, N <= 300). Each of the following M lines contains N uppercase letters, each of which is one of ‘Y’ (you), ‘T’ (target), ‘S’ (steel wall), ‘B’ (brick wall), ‘R’ (river) and ‘E’ (empty space). Both ‘Y’ and ‘T’ appear only once. A test case of M = N = 0 indicates the end of input, and should not be PRocessed.

Output

For each test case, please output the turns you take at least in a separate line. If you can’t arrive at the target, output “-1” instead.

Sample Input

3 4 YBEB EERE SSTE 0 0

Sample Output

8

題解

#include<cstdio>#include<cstring>#include<queue>#define MAX_N 302#define INF 0x3f3f3f3fusing namespace std;int ox[]={0,0,-1,1};int oy[]={1,-1,0,0};char map[MAX_N][MAX_N];int dp[MAX_N][MAX_N];int M,N;int bfs(){ memset(dp,0x3f,sizeof(dp)); queue<pair<int,int> > que; for(int j=0;j<M;j++) for(int k=0;k<N;k++) if(map[j][k]=='Y'){ que.push(make_pair(j,k)); dp[j][k]=0; break; } int J,K; for(J=0;J<M;J++){ for(K=0;K<N;K++) if(map[J][K]=='T') break; if(map[J][K]=='T') break; } map[J][K]='E'; while(!que.empty()){ int Y=que.front().first,X=que.front().second;que.pop(); int S=dp[Y][X]+1; for(int i=0;i<4;i++){ int y=Y+oy[i]; int x=X+ox[i]; if(0<=y&&y<M&&0<=x&&x<N&&(map[y][x]=='E'||map[y][x]=='B')){ int r=map[y][x]=='B'?1:0; if(dp[y][x]<=r+S) continue; dp[y][x]=r+S; que.push(make_pair(y,x)); } } } return dp[J][K]==INF?-1:dp[J][K];}int main(){ while(~scanf("%d%d",&M,&N)&&M&&N){ for(int i=0;i<M;i++) scanf("%s",map[i]); printf("%d/n",bfs()); } return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美一级三级在线观看 | 中文字幕综合在线观看 | 成人短视频在线播放 | 一级免费毛片 | 中国性xxx | 国产精品视频一区二区三区四区五区 | 国产噜噜噜噜噜久久久久久久久 | 成人免费观看49www在线观看 | 天天透天天狠天天爱综合97 | 午夜视频免费在线观看 | 国产精品jk白丝蜜臀av软件 | 一级免费黄色免费片 | 澳门一级淫片免费视频 | av资源在线天堂 | 精品久久久久久久久久久久久久久久久久久 | 极品大长腿啪啪高潮露脸 | 国产精品视频1区 | 日韩精品中文字幕在线观看 | av在线影片 | 久久久久久久久免费 | 国产一级一片免费播放 | 欧美巨乳在线观看 | 欧美性黄 | 在线观看国产网站 | 国产在线1区| 欧美一级免费在线观看 | 中国老女人一级毛片视频 | 91懂色| 中文字幕亚洲一区二区三区 | 深夜小视频在线观看 | 日本成人在线免费 | 国产激情视频在线 | 亚洲电影在线观看高清免费 | 成人9禁啪啪无遮挡免费 | 欧美国产永久免费看片 | 欧美一级精品 | 九色91视频| 国产自91精品一区二区 | 蜜桃欧美性大片免费视频 | 黄色网络免费看 | 欧美日本日韩 |