• POJ 2251 Dungeon Master BFS


    题目链接:http://poj.org/problem?id=2251

    这道题坑爹的地方在于。。。我很悲剧的一个变量写错了~
     
     
    View Code
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    char map[35][35][35];
    int pro[35][35][35];
    int fro,re;
    struct node
    {
        int l,r,c,step;
    }q[100005],v;
    int main()
    {
        int r,l,c,i,j,k,leap,ii,jj,num;
        while(scanf("%d %d %d",&l,&r,&c)&& l||r||c)
        {
            leap = 1;
    
            memset(map,0,sizeof(map));
            memset(pro,0,sizeof(pro));
            for(i = 0;i < l;i++)
            {
                getchar();
                for(j = 0;j < r;j++)
                gets(map[i][j]);
            }
    
            for(i = 0;i < l;i++)
            {
                for(j = 0;j < r;j++)
                {
                    for(k = 0;k < c;k++)
                    if(map[i][j][k] == 'S')
                    {
                        leap = 0;
                        break;
                    }
                    if(!leap)
                    break;
                }
                if(!leap)
                break;
            }
            fro = 0;
            re = 0;
            q[re].l = i;
            q[re].r = j;
            q[re].c = k;
            q[re].step = 0;
            re++;
            pro[i][j][k] = 1;
            leap =1;
    
            while(fro < re)
            {
                v = q[fro];
                num = v.step;
                fro++;
                for(j = 0;j < 6;j++)
                {
                    if(j == 0)
                    ii = v.l+1,jj = v.r,k = v.c;
                    if(j == 1)
                    ii = v.l-1,jj = v.r,k = v.c;
                    if(j == 2)
                    ii = v.l,jj = v.r+1,k = v.c;
                    if(j == 3)
                    ii = v.l,jj = v.r-1,k = v.c;
                    if(j == 4)
                    ii = v.l,jj = v.r,k = v.c+1;
                    if(j == 5)
                    ii = v.l,jj = v.r,k = v.c-1;
                    if(ii >= 0&&jj >= 0 && k >= 0 &&ii < l&&jj < r && k < c)
                    {
                        if(map[ii][jj][k] != '#' && pro[ii][jj][k] != 1)
                        {
                            q[re].l = ii;
                            q[re].r = jj;
                            q[re].c = k;
                            q[re].step = num+1;
                            if(map[ii][jj][k] == 'E')
                            {
                                leap = 0;
                                break;
                            }
                            pro[ii][jj][k] = 1;
                            re++;
                        }
                    }
    
                }
                if(!leap)
                    break;
            }
            if(!leap)
            printf("Escaped in %d minute(s).\n",q[re].step);
            else
            puts("Trapped!");
        }
        return 0;
    }
  • 相关阅读:
    Google Chrome 默认非安全端口列表
    js判断类型的方法
    博客园样式排版自定义
    easyloader.js源代码分析
    JQuery操作cookies
    js获取iframe里面的dom
    封装GetQueryString()方法来获取URL的value值
    js 获取系统时间:年月日 星期 时分秒(动态)
    vue 滚动加载数据
    props 父组件给子组件传递参数
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2617124.html
Copyright © 2020-2023  润新知