zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    KMP 算法 C++
    java RTTI笔记 之Class学习笔记(摘自java编程思想)
    java sql
    event
    mysql 编写存储过程
    《淘宝技术这十年》重读笔记
    关于“产品”的笔记
    程序员,当你遇到一个“坑”
    C盘清理大作战
    android开发笔记
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2617124.html
Copyright © 2011-2022 走看看