• HDU 1240 Asteroids!


    三维广搜

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    #include <queue>
    using namespace std;
     
    struct node
    {
        int x,y,z;
        int steps;
    }start,end,next;
    int dx[6]={0,0,0,0,1,-1};    
    int dy[6]={0,0,-1,1,0,0};
    int dz[6]={1,-1,0,0,0,0};
    char maps[15][15][15];
    int n,res;
     
    bool check(node &a)
    {
        if(a.x>=0&&a.x<n&&a.y>=0&&a.y<n&&a.z>=0&&a.z<n)
            return true;
        else return false;
    }
     
    int bfs()
    {
        if(start.x==end.x&&start.y==end.y&&start.z==end.z)
            return res;
        node cur;
        queue<node> q;
        while(!q.empty())
            q.pop();
        q.push(start);
        maps[start.x][start.y][start.z]='X';
        while(!q.empty())
        {
            cur=q.front();
            q.pop();
            for(int i=0;i<6;i++)
            {
                next.x=cur.x+dx[i];
                next.y=cur.y+dy[i];
                next.z=cur.z+dz[i];
                if(next.x==end.x&&next.y==end.y&&next.z==end.z) 
                    return cur.steps+1;                             
                if(maps[next.x][next.y][next.z]=='O'&&check(next))
                {
                    next.steps=cur.steps+1;
                    maps[next.x][next.y][next.z]='X';
                    q.push(next);
                }
            }
        }
        return -1;
    }
     
    int main()
    {
        int i,j;
        char st[6],ed[6];
        while(scanf("%s%d",&st,&n)!=EOF)
        {
            getchar();
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                    scanf("%s",maps[i][j]);
                getchar();
            }
            scanf("%d%d%d",&start.x,&start.y,&start.z);
            scanf("%d%d%d",&end.x,&end.y,&end.z);
            getchar();
            gets(ed);
            res=0;
            start.steps=0;
            res=bfs();
            if(res>=0) printf("%d %d
    ",n,res);
            else printf("NO ROUTE
    ");
        }
        return 0;
    }
  • 相关阅读:
    获取账号所有联系人
    获取用户的初始信息展示
    pip升级的错误
    二维码长轮询获取登陆并获取用户基本信息
    获取微信二维码
    WebChat理清流程
    python的requests模块
    python的单例模式和__new__方法
    matplotlib 基础知识汇总
    pandas数据分析案例:美国2012年总统候选人政治献金数据分析
  • 原文地址:https://www.cnblogs.com/forever97/p/3541218.html
Copyright © 2020-2023  润新知