我是靠谱客的博主 落后御姐,最近开发中收集的这篇文章主要介绍HDU 1242 Rescue (DFS),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//题意自己看,不会度娘
#include <stdio.h>
#include <math.h>
#include <string.h>
char map[205][205];//地图
int flag[205][205];//标记
int n,m,ok,num;
void DFS(int x,int y,int step)
{
    if(flag[x][y]||map[x][y]=='#'||step>=num)//剪枝。如果走到墙或者步数不是最少还有这个坐标已经走过
    return;
    if(map[x][y]=='r')//表示已经营救成功
    {
        ok=1;
        if(step<num)
        num=step;
        return;
    }
    if(map[x][y]=='x')//如果是警卫,步数加一
    step++;
    flag[x][y]=1;//将flag[x][y]标记为1表示已走
    DFS(x+1,y,step+1);
    DFS(x-1,y,step+1);
    DFS(x,y+1,step+1);
    DFS(x,y-1,step+1);//四个方向一一走过,可以继续走的话就继续往下走
    flag[x][y]=0;//如果运行到这里说明四个方向都不行,将flag[x][y]重新标记为未走
} 
int main(int argc, char *argv[])
{
while(~scanf("%d %d%*c",&n,&m))
{
    int si,sj,i,j;
    memset(map,'#',sizeof(map));
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            scanf("%c",&map[i][j]);
            if(map[i][j]=='a')
            {
                si=i;
                sj=j;
            }//标记位置
        }
        getchar();
    }
ok=0;
num=100000;
DFS(si,sj,0);
if(ok)
printf("%dn",num);
else
printf("Poor ANGEL has to stay in the prison all his life.n");    
}
    return 0;
}
//Start-ZJ

最后

以上就是落后御姐为你收集整理的HDU 1242 Rescue (DFS)的全部内容,希望文章能够帮你解决HDU 1242 Rescue (DFS)所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部