我是靠谱客的博主 烂漫毛巾,最近开发中收集的这篇文章主要介绍HDU 1242,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

搜索水题:

#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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部