概述
搜索水题:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MMAX 999999
int n, m;
int dp[210][210];
int map[210][210];
int point[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
void dfs(int x, int y, int num) {
if(dp[x][y] < num) return;
dp[x][y] = num;
for(int i = 0; i < 4; i++) {
int xx = x + point[i][0];
int yy = y + point[i][1];
if(map[xx][yy] == '#' || xx < 0 || xx >= m || yy < 0 || yy >= n) continue;
if(map[xx][yy] == '.' || map[xx][yy] == 'r') {
dfs(xx, yy, num+1);
}
if(map[xx][yy] == 'x') {
dfs(xx, yy, num+2);
}
}
}
int main() {
int sx, sy, ex, ey;
while(scanf("%d%d", &m, &n) != EOF) {
getchar();
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
scanf("%c", &map[i][j]);
dp[i][j] = MMAX;
}
getchar();
}
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
if('a' == map[i][j]) {
sx = i;
sy = j;
}
else if('r' == map[i][j]) {
ex = i;
ey = j;
}
}
}
dp[sx][sy] = 0;
dfs(sx, sy, 0);
if(dp[ex][ey] == MMAX) printf("Poor ANGEL has to stay in the prison all his life.n");
else printf("%dn", dp[ex][ey]);
}
return 0;
}
最后
以上就是烂漫毛巾为你收集整理的HDU 1242的全部内容,希望文章能够帮你解决HDU 1242所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复