zoukankan      html  css  js  c++  java
  • hdu 1253 胜利大逃亡(广搜,队列,三维,简单)

    题目

    原来光搜是用队列的,深搜才用栈,我好白痴啊,居然搞错了

    三维的基础的广搜题

    #define  _CRT_SECURE_NO_WARNINGS
    
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<queue>
    using namespace std;
    #define MAXN 60
    int map[MAXN][MAXN][MAXN],t,a,b,c;
    bool vis[MAXN][MAXN][MAXN];
    struct tt
    {
        int x,y,z,step;
    };
    queue<tt>q;
    int xx[6]={0,0,1,-1,0,0};
    int yy[6]={1,-1,0,0,0,0};
    int zz[6]={0,0,0,0,1,-1};
    int bfs()
    {
        if(a==1&&b==1&&c==1)return 0;
        while(!q.empty())
            q.pop();
        memset(vis,false,sizeof(vis));
        tt front,rear,temp;
        front.x=0;front.y=0;front.z=0;front.step=0;
        q.push(front);
        vis[0][0][0]=true;
        while(!q.empty())
        {
            temp=q.front();
            q.pop();
            if(temp.x+1==a&&temp.y+1==b&&temp.z+1==c)
                return temp.step;//原来是这个放错地方了,应该对出栈的数据进行检验
            for(int i=0;i<6;i++)
            {
                rear.x=temp.x+xx[i];
                rear.y=temp.y+yy[i];
                rear.z=temp.z+zz[i];
                rear.step=temp.step+1;
                if(rear.x>=0&&rear.x<a&&rear.y>=0&&rear.y<b&&rear.z>=0&&rear.z<c&&map[rear.x][rear.y][rear.z]==0&&vis[rear.x][rear.y][rear.z]==false)
                {
                    q.push(rear);
                    vis[rear.x][rear.y][rear.z]=true;
                }
            }
        }
        return t+1;
    }
    
    int main()
    {
        int n,i,j,k,ans;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d%d%d%d",&a,&b,&c,&t);
            for(i=0;i<a;i++)
            {
                for(j=0;j<b;j++)
                {
                    for(k=0;k<c;k++)
                    {
                        scanf("%d",&map[i][j][k]);  
                    }
                }
            }
            ans=bfs();
            if(ans>t)
                printf("-1
    ");
            else
                printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    java学习笔记—ServletConfig、ServletContext接口(13)
    php中的XML DOM(11)
    php中的XML DOM(10)
    java学习笔记—Servlet技术(11)
    MM-移动类型
    MM-委外业务
    English-商务英文邮件例句100句
    ABAP-表中数据的横向累加
    MM-实际应用中的难题
    ABAP-加密解密
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3546225.html
Copyright © 2011-2022 走看看