Hdu 1240 Asteroids题解

2023-11-16

题目链接:1240

思路:BFS搜索,采用队列实现,搜索的层级即为步数。

代码如下:

#include<bits/stdc++.h>
using namespace std;
struct point{
    int x,y,z,w; //w表示BFS搜索的深度
    bool operator ==(const point &p); //运算符重载判断结构体是否相等
};
bool point::operator==(const point&p){
    return ((x==p.x)&&(y==p.y)&&(z==p.z));
}
char road[10][10][10];
int dir[6][3]={
    {1,0,0},
    {-1,0,0},
    {0,1,0},
    {0,-1,0},
    {0,0,1},
    {0,0,-1}
};
bool inmap(point p,int N){
    int x=p.x,y=p.y,z=p.z;
    if(x>=0&&x<N){
        if(y>=0&&y<N){
            if(z>=0&&z<N){
                return true;
            }
        }
    }
    return false;
}
bool safe(point p){
    if(road[p.x][p.y][p.z]=='O'){
        return true;
    }
    return false;
}
int BFS(int n,point start,point end){
    if(start==end){
        return 0;
    }
    queue<point>op;
    point next,s;
    op.push(start);
    while(!op.empty()){
        s=op.front();
        op.pop();
        for(int i=0;i<6;i++){
            next.x=s.x+dir[i][0];
            next.y=s.y+dir[i][1];
            next.z=s.z+dir[i][2];
            next.w=s.w+1;
            if(inmap(next,n)&&safe(next)){
                op.push(next);
                road[next.x][next.y][next.z]='X';
            }
            //找到目标
            if(next==end){
                return next.w;
            }
        }
    }
    return -1;
}
int main(){
    string s;
    int n,step=0;
    point start,end;
    while(cin>>s>>n){
        for(int k=0;k<n;k++){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    cin>>road[i][j][k];
                }
            }
        }
        cin>>start.x>>start.y>>start.z;
        cin>>end.x>>end.y>>end.z;
        cin>>s;
        start.w=0;
        end.w=0;
        int ans=BFS(n,start,end);
        if(ans>=0){
            cout<<n<<" "<<ans<<endl;
        }
        else{
            cout<<"NO ROUTE"<<endl;
        }
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hdu 1240 Asteroids题解 的相关文章

随机推荐

  • Stable Diffusion使用方法

    SD的本地安装教程有很多我就不重复了 这里主要是记录我在使用SD Webui的过程中遇到的问题 总结的一些提升出图效率 出好图概率的经验 先搞几张看看效果 二次元妹妹 高达 Ok 以上只是一小部分成品 属于是抛砖引玉之作 我当时设置的参数出
  • word打不开提示安装Genko.msi该怎办

    word打不开提示安装Genko msi该怎办 今天有同学给我说电脑有问题了 启动WORD后让安装Genko msi 正好解决了顺便写一个经验吧 方法一 1 错误提示是这样的 2 首先在开始菜单打开 运行 win7直接开始菜单输入就行 然后
  • webpack5后台管理

    1 系统基于panjiachen后台管理系统模板 升级webpack5 2 github地址 https chengmanxiang webpack5 vue2 admin 3 线上地址 webpack5 vue2
  • Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(Spring AOP、AutoCloseable方式)

    场景 Java中基于JDK的LRU算法实现 LRU算法 缓存淘汰算法 Least recently used 最近最少使用算法 根据数据的历史访问记录来进行淘汰数据 其核心思想是 如果有数据最近被访问过 那么将来被访问的几率也更高 在Jav
  • TS2550: Property ‘entries‘ does not exist on type ‘ObjectConstructor‘.

    TS2550 Property entries does not exist on type ObjectConstructor Do you need to change your target library Try changing
  • requests请求

    请求方式 requests get 发送get请求 通过params传递参数 requests post 发送post请求 通过json data 传递参数 data 数据报文 dict字典类型 默认情况下请求头为applilcation
  • Unity学习总结(学几个月C++,找到了用Unity和C#的活)

    一 主人物控制 通过调整Main Camera位置和角度 可以确定合适的游戏视角 可以建立playController脚本 里面存放对主人物进行控制的代码 transform translate 可以设置当前组件的坐标 transform
  • 【STM32学习笔记】(1)—— STM32详解

    什么是STM32 STM32的字面含义 1 ST 代表着意法半导体公司 即由什么公司生产 意法半导体公司是一家SOC厂商 所谓SOC System on a Chip 根据它的中文意思可以知道 把系统都做在一个芯片上 如果在PC时代我们说一
  • 开放型 MODBUS-TCP规范(中文版)2

    导读 5 3 等级2指令详述 5 3 1 强制多点线圈 FC 15 请求 Byte 0 FC 0F 16进制 Byte 1 2 参考数值 Byte 3 4 比特数 1 800 Byte 5 字节数 B 比特数 7 8 Byte 6 B 5
  • Matlab计算完全消耗系数

    数据来源wiod 1 计算 clear clc eta cell 14 2 year 2000 2013 for i 1 14 eta i 2 1999 i end Type Sheet Fromat xlsfinfo F yida pro
  • 树莓派练习程序(避障模块)

    火焰检测模块如下 树莓派的引脚如下图 我们将Vcc引脚连接物理接口2 GND引脚连接物理接口39 DO引脚连接物理接口40 实物连接如下图 编程使用WiringPi库 使用wpi引脚编码方式控制GPIO 代码如下 include
  • 电路基础(3)电阻电路等效变换的经典例题

    1 R 2 求Rab的等效电阻 这个电路是个对称网络 若通过a b结点做一条中分线 中分线两侧的电路相同 d d d 三点的电位相同 2 求Rab的等效电阻 这个电路是双T网络 每个T形就是一个Y形联结 但两个Y形联结的中点电位一般不同 不
  • Jupyter Notebook打不开,点了后黑窗闪动了下

    版权声明 转载请注明作者 独孤尚良dugushangliang 出处 https blog csdn net dugushangliang article details 114667080 在程序菜单中双击Jupyter Notebook
  • Java API操作Hadoop可能会遇到的问题以及解决办法

    Could not locate Hadoop executable xxx bin winutils exe 1 2 3 4 5 6 Caused by java io FileNotFoundException Could not lo
  • RandomAccessFile类使用详解

    RandomAccessFile类使用详解 疯狂java讲义读书笔记之RandomAccessFile类的使用详解 1 RandomAccessFile特点 RandomAccessFile是java Io体系中功能最丰富的文件内容访问类
  • django_安装django-haystack报错_ERROR: Command errored out with exit status 1: python setup.py egg_info C

    问题描述 在阿里云服务器 Ubantu14 0 上安装django haystack报错 ERROR Command errored out with exit status 1 python setup py egg info Check
  • 手机通过RNDIS共享网络

    RNDIS 是 Remote Network Driver Interface Specification 远程网络驱动程序接口规范 的首字母缩写 实际上的作用为 TCP IP over USB 也即把 USB 设备 如手机 作为网卡 是基
  • 用Java开发贪食蛇小游戏

    用Java开发贪食蛇小游戏 一 实验内容 1 实现贪吃蛇游戏基本功能 屏幕上随机出现一个 食物 称为豆子 上下左右控制 蛇 的移动 吃到 豆子 以后 蛇 的身体加长一点 得分增加 蛇 碰到边界或 蛇头与蛇身相撞 蛇死亡 游戏结束 为游戏设计
  • Unity3D实现游戏暂停

    Unity3D实现游戏暂停 要素理解 代码 分析理解 要素理解 timeScale Float 默认值为1 能够影响时间流速 置0可使时间暂停 查阅官网文档 Time timeScale 中可以发现对于timeScale描述中要求暂停物体的
  • Hdu 1240 Asteroids题解

    题目链接 1240 思路 BFS搜索 采用队列实现 搜索的层级即为步数 代码如下 include