2022-02-15:扫地机器人。
房间(用格栅表示)中有一个扫地机器人。
格栅中的每一个格子有空和障碍物两种可能。
扫地机器人提供4个API,可以向前进,向左转或者向右转。每次转弯90度。
当扫地机器人试图进入障碍物格子时,它的碰撞传感器会探测出障碍物,使它停留在原地。
请利用提供的4个API编写让机器人清理整个房间的算法。
interface Robot {
// 若下一个方格为空,则返回true,并移动至该方格
// 若下一个方格为障碍物,则返回false,并停留在原地
boolean move();

// 在调用turnLeft/turnRight后机器人会停留在原位置
// 每次转弯90度
void turnLeft();
void turnRight();

// 清理所在方格
void clean();
}
输入:
room = [
[1,1,1,1,1,0,1,1],
[1,1,1,1,1,0,1,1],
[1,0,1,1,1,1,1,1],
[0,0,0,1,0,0,0,0],
[1,1,1,1,1,1,1,1]
],
row = 1,
col = 3

解析:
房间格栅用0或1填充。0表示障碍物,1表示可以通过。
机器人从row=1,col=3的初始位置出发。在左上角的一行以下,三列以右。

注意:
输入只用于初始化房间和机器人的位置。你需要“盲解”这个问题。
换而言之,你必须在对房间和机器人位置一无所知的情况下,只使用4个给出的API解决问题。
扫地机器人的初始位置一定是空地。
扫地机器人的初始方向向上。
所有可抵达的格子都是相连的,亦即所有标记为1的格子机器人都可以抵达。
可以假定格栅的四周都被墙包围。
力扣489。

答案2022-02-15:

map记录走过的路。
0上,1右,2下,3左。
递归。

代码用golang编写。代码如下:

package mainimport "strconv"func main() {}// 不要提交这个接口的内容
type Robot interface {move() boolturnLeft()turnRight()clean()
}// 提交下面的内容
func cleanRoom(robot Robot) {clean(robot, 0, 0, 0, make(map[string]struct{}))
}var ds = [][]int{{-1, 0}, {0, 1}, {1, 0}, {0, -1}}// 机器人robot,
// 当前来到的位置(x,y),且之前没来过
// 机器人脸冲什么方向d,0 1 2 3
// visited里记录了机器人走过哪些位置
// 函数的功能:不要重复走visited里面的位置,把剩下的位置,都打扫干净!
//           而且要回去!
func clean(robot Robot, x, y, d int, visited map[string]struct{}) {robot.clean()visited[strconv.Itoa(x)+"_"+strconv.Itoa(y)] = struct{}{}for i := 0; i < 4; i++ {// d = 0 :  0 1 2 3// d = 1 :  1 2 3 0// d = 2 :  2 3 0 1// d = 3 :  3 0 1 2// 下一步的方向!nd := (i + d) % 4// 当下一步的方向定了!下一步的位置在哪?(nx, ny)nx := ds[nd][0] + xny := ds[nd][1] + y_, ok := visited[strconv.Itoa(nx)+"_"+strconv.Itoa(ny)]if !ok && robot.move() {clean(robot, nx, ny, nd, visited)}robot.turnRight()}// 负责回去:之前的位置,怎么到你的!你要回去,而且方向和到你之前,要一致!robot.turnRight()robot.turnRight()robot.move()robot.turnRight()robot.turnRight()
}

左神java代码

2022-02-15:扫地机器人。 房间(用格栅表示)中有一个扫地机器人。 格栅中的每一个格子有空和障碍物两种可能。 扫地机器人提供4个API,可以向前进,向左转或者向右转。每次转弯90度。 当扫地机相关推荐

  1. 2022.02.09_Java学习总结_网络编程、正则表达式

    1. 网络编程 1.1 概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接, ...

  2. MQ100门座起重机 双螺旋输送机总装图 减速机图纸 自动圆式焊机总装图 VF6-7空气压缩机曲轴加工工艺及夹具设计 组合机床工艺设计 RV蜗轮蜗杆减速机 90度皮带机运载机器人设计……

    MQ100门座起重机 双螺旋输送机总装图 减速机图纸 自动圆式焊机总装图 VF6-7空气压缩机曲轴加工工艺及夹具设计 组合机床工艺设计 RV蜗轮蜗杆减速机 90度皮带机 运载机器人设计 HBGL120 ...

  3. 90度皮带转弯机CAD、板链斗式提升机、宾馆空调系统设计、三相分离器、电火花线切割机床、CNG加气站网架设计选址及总平面布置图、CNG加气站网架设计工艺流程图 CAD、伺服液压缸图纸、啤酒发酵罐………

    甘蔗联合收割机设计 NE50板链斗式提升机全套CAD图纸 装配图 零件图  明细表 端盖零件的工艺规程及钻Φ16H7孔的工装夹具设计 方刀架的加工工艺及钻8-M12螺纹底孔夹具设计[5张优秀]CAD总 ...

  4. 长宽相等的矩阵(二维数组)逆时针旋转90度

    将长宽相等的矩阵(二维数组)逆时针旋转90度,例如,有如下一个二维数组 00 10 20 30 40 50 60 01 11 21 31 41 51 61 02 12 22 32 42 52 62 0 ...

  5. 将三角形绕点b顺时针旋转90度_模型 | 图形旋转与翻折题型汇编

    一文搞定-文章推荐-点击阅读 初中数学必会的12个几何模型(222页Word) 2020年中考数学33个模型全梳理(125页Word) 2021中考18个必考几何模型大梳理(656页PPT) 中考模型 ...

  6. 小米一代扫地机器人磨损家具_为了以后的众测 篇二:无差评居家神器——Mi 小米 扫地机器人...

    为了以后的众测 篇二:无差评居家神器--Mi 小米 扫地机器人 2017-06-30 11:20:19 64点赞 120收藏 156评论 讲道理,我也没有想到我会买这个扫地机器人. 作为一个标准的懒癌 ...

  7. python将矩阵顺时针旋转90度_python实现顺时针打印矩阵

    面试题之顺时针打印矩阵,Python实现,供大家参考,具体内容如下 问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵: 则依次打印出数字1,2,3,4,8, ...

  8. OpenCV warpAffine做图像旋转变换90度黑边问题

    OpenCV提供两种图像旋转函数,一个是cv2::rotate,只提供90,180,270三种角度的旋转.另一个是使用仿射变换的方式,实现任意角度的变换. 为了通用,我们都使用仿射变换的方式进行图像旋 ...

  9. c语言读取24位BMP文件并实现翻转90度、180度、270度

    BMP图片格式 BMP图片,是Bitmap(位图)的简称,它是windows显示图片的基本格式.在windows下,任何格式的图片文件(包括视频播放)都要转化为位图才能显示出来.各种格式的图片文件也都 ...

最新文章

  1. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器
  2. python整数类型在每一台计算机上的取值范围是一样的_Python编程知识点总结
  3. 自学python需要安装什么软件-python自学需要什么软件?
  4. 在 word 中 mathType 菜单灰色,无法使用
  5. NK.bin和NK.nb0学习
  6. python怎么把图片压缩_使用Python轻松批量压缩图片
  7. Python3算法基础练习:编程100例(11 ~ 15)
  8. 强化学习 ---baseline项目之 TensorFlow的训练参数的存储和加载
  9. 知识点026-rsync命令的使用
  10. 怎样利用商业智能软件实现业务目标
  11. 录录录屏(video321)--1款亲测好用的免费高清录屏软件。你一定无法拒绝(附使用教程)
  12. Navicat Premium连接服务器数据库不成功的原因
  13. java 动态分区 链表_大二作业——操作系统实验——C语言用双向链表,模拟实现动态分区式存储管理...
  14. ShopXO开源电商系统源码支持PC+H5支付宝小程序微信小程序百度小程序头条抖音小程序QQ小程序APP等
  15. HoloLens开发环境安装部署(基于Unity2018.4/VS2017/MRTK)
  16. cmake,make
  17. 似墨迹天气 widget翻页时钟实现
  18. java毕业设计社区志愿者服务管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  19. careueyes|careueyes pro中文版(电脑护眼) v2.0.0.6
  20. CSDN写文章(Markdown编辑)时的瞄点 文章目录是怎么弄的

热门文章

  1. 追MM“23式”—— GOF 23种设计模式
  2. 计算机派位志愿填报技巧,海淀小升初哪些入学途径采取电脑派位 志愿又怎么填报 2021家长了解...
  3. oracle10g笔记1
  4. 大数据计算框架与平台--深入浅出分析
  5. 开工干活累了,晚上不得找个陪玩打打游戏?我教你们用python找个人美声甜的
  6. 阿里巴巴年度技术总结 - 人工智能在搜索的应用和实践
  7. matlab 拟合光滑曲线图,Matlab光滑曲线多项式拟合与样条曲线拟合的两个案例
  8. 爱心代码(带字的奥)
  9. 泰坦尼克号沉船练习(Titanic Practice)
  10. mysql语句按时间顺序排序_SQL语句怎么写?先按时间排序,再按姓名排序?