实现代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */struct Status{int x,y;int t;int d;
};queue<Status> Q;
bool mark[20][20] = {false};
char maze[20][20];int getDr(char c){// 获得朝向 switch(c){case 'U':return 0;case 'R':return 1;case 'D':return 2;case 'L':return 3;      }
} bool result(int x,int y){  // 判断当前位置是否是结果 if(mark[x-1][y]==true&&mark[x+1][y]==true&&mark[x][y-1]==true&&mark[x][y+1]==true){return true;}return false;
}void getNextLocation(int *x,int* y,Status &s){if(s.d==0){*x = s.x-1;*y = s.y;return;}if(s.d==1){*x = s.x;*y = s.y+1;return;}if(s.d==2){*x = s.x+1;*y = s.y;return;}if(s.d==3){*x = s.x;*y = s.y-1;return;}
}int BFS(int w,int h){while(!Q.empty()){Status cur = Q.front();Q.pop();if(result(cur.x,cur.y))return cur.t; // 在BFS中 要弄清楚目标状态是什么  如果是目标状态 返回结果int nx;int ny;getNextLocation(&nx,&ny,cur);if(mark[nx][ny]==true||maze[nx][ny]=='*'){mark[nx][ny] = true;cur.d = (cur.d+1)%4; // 右转Q.push(cur);continue; }else{mark[nx][ny] = true;cur.x = nx;cur.y = ny;cur.t = cur.t+1;Q.push(cur);continue;}}return 1;
}int main(int argc, char** argv) {int w,h;while(scanf("%d%d",&w,&h)){// 清空上一次的数据 while (!Q.empty()) {Q.pop();}for (int i = 0; i < 20; i++) {for (int j = 0; j < 20; j++) {mark[i][j] = false;maze[i][j] = 0;}}// 进入这一次的输入 for(int i=1;i<=w;i++){scanf("%s",maze[i]+1);}mark[1][1] = true;for(int i=0;i<=w+1;i++){mark[i][0] = true;mark[i][h+1] = true;}for(int j=0;j<=h+1;j++){mark[0][j] = true;mark[w+1][j] = true;}Status temp;temp.x=temp.y=temp.t=1;temp.d = getDr(maze[1][1]);Q.push(temp);int ret = BFS(w,h);printf("%d\n",ret);//printf("%c",maze[1][1]); }return 0;
}

1010: 机器人走迷宫相关推荐

  1. 【算法】机器人走迷宫(适用于走迷宫、最短路径算法)-20200412

    标题:机器人走迷宫(适用于走迷宫.最短路径算法) 问题描述: 一块矩形方格,含有障碍和可通行格子,求从某一点到另外一点的最短距离?N*M的矩阵: 其中,1代表障碍,0代表可通行:示例:给定二维矩阵 0 ...

  2. 中南大学复试上机:1021:机器人走迷宫

    1021: 机器人走迷宫 时间限制: 1 Sec  内存限制: 128 MB 题目描述 有一个愚蠢的机器人走进一个w*h的迷宫,迷宫里有空地和陷阱.他想要访问迷宫的每个方格,但是它很笨,只会按照指令的 ...

  3. python走迷宫_Python使用Tkinter实现机器人走迷宫

    这本是课程的一个作业研究搜索算法,当时研究了一下Tkinter,然后写了个很简单的机器人走迷宫的界面,并且使用了各种搜索算法来进行搜索,如下图: 使用A*寻找最优路径: 由于时间关系,不分析了,我自己 ...

  4. 【华为OD机试真题 JAVA】机器人走迷宫

    标题:机器人走迷宫 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限 1. 房间由X*Y的方格组成,例如下图为6*4的大小.每一个方格以坐标(x,y)描述. 2. 机器人固定从方格( ...

  5. 【华为机试】【校招】【Java】机器人走迷宫(DFS)

    ■ 题目描述 [机器人走迷宫] 机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入. 机器人从0,0的位置走到x,y的位置并且只 ...

  6. 华为机试:机器人走迷宫

    题目来源 华为机试:机器人走迷宫 题目描述 1. 房间由XY的方格组成,例如下图为64的大小.每一个方格以坐标(x,y)描述. 2. 机器人固定从方格(0,0)出发,只能向东或者向北前进.出口固定为房 ...

  7. 华为机试二星题--机器人走迷宫

    题目 机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入. 机器人从0,0的位置走到x,y的位置并且只能向x,y增加的方向走,不 ...

  8. 华为机试【机器人走迷宫】

    标题:机器人走迷宫 | 时间限制:1秒 | 内存限制:65536K | 语言限制: 不限 [机器人走迷宫]1. 房间由XY的方格组成,例如下图为64的大小.每一个方格以坐标(x,y)描述. 2. 机器 ...

  9. 【算法题】机器人走迷宫

    机器人走迷宫 力扣62. 不同路径 package dynamicProgramming;import java.io.BufferedReader; import java.io.IOExcepti ...

最新文章

  1. 5G NR - 总体架构与物理层
  2. Timus1286(欧几里德算法的应用)
  3. NET问答: 如何实现读写 file 的时候不用锁模式 ?
  4. 欢乐纪中某B组赛【2018.12.8】
  5. python中ans的用法_python cx_Oracle基础使用方法
  6. 计算机专业简历中技能特长怎么写,简历上特长技能应该怎么填写
  7. python编译exe运行慢_Python运行速度慢你知道这是为什么吗?
  8. bzoj4517 [Sdoi2016]排列计数 组合数+错排
  9. (转) RabbitMQ学习之发布/订阅(java)
  10. .Net Mvc Automated Migration 数据迁移
  11. 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库
  12. 润乾报表分组求和_中国式复杂报表:按段分组报表制作对比(润乾 vs 帆软)...
  13. 树莓派4B配置远程桌面软件 Teamviewer(解决报错)
  14. Excel表格常用函数-VLOOKUP|IFERROR|IF
  15. b区计算机211学校排名,考研B区院校排名
  16. NC高级UI工厂笔记
  17. 【软件网每日新闻播报│第9-22期】
  18. ICCV 2021 Oral | 金字塔视觉Transformer(PVT):用于密集预测的多功能backbone
  19. 计算机操作系统 - 概述
  20. 计算机考试用到的英语词汇,BEC商务英语_计算机英语高级词汇·软件篇_沪江英语...

热门文章

  1. JAVA动态表单,自定义表单,自定义字段
  2. SMTP协议(中文)RSC821
  3. 3.你有三个碗:分别是7,4,3升容量。只有7升那个是满的。用最少次数倒出分别是2,2,和3升水。
  4. 2019年4月10日-自己的技术博客访问量到达一百万
  5. IP网络对讲系统特点及功能
  6. Invalid argument: Key: XXX. Can‘t parse serialized Example.
  7. 我讨厌this!!!!
  8. Conda base环境被破坏,还原方法,亲测有效
  9. MySQL读写分离(二)——Atlas实现读写分离
  10. 苹果史上最大人员收购案诞生:6亿美元交易,300名Dialog工程师加入