当前位置:网站首页>机器人的运动范围
机器人的运动范围
2022-07-30 00:09:00 【龙崎流河】
题目:
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?
分析:
机器人如果想到达右下角,只需要右移和下移,同时要避免遇到相同的格子,因为在过程中会遇到障碍,左移和上移会走到重复的格子,重复的格子就不用算了,所以该题最好采用图的深度优先遍历,由于k的限制,需要自己创建一个函数,来计算方格坐标化成数字然后与k比较,如果k小于函数计算坐标的和,那么就不能通过。
代码:
public class MovingCount {
//深度优先遍历
int m;
int n;
int k;
boolean[][] visited;
public int movingCount(int m, int n, int k) {
this.m = m;
this.n = n;
this.k = k;
visited = new boolean[m][n];
return dfs(0,0);
}
private int dfs(int i, int j) {
if (i <0 || j <0 || i >=m || j>= n || visited[i][j] || k < sum(i)+sum(j)){
return 0;
}
visited[i][j] = true;
return 1 + dfs(i+1,j) + dfs(i,j+1);
}
private int sum(int x){
int res = 0;
while (x !=0){
res = res + x%10;
x = x/10;
}
return res;
}
}
边栏推荐
猜你喜欢
每周推荐短视频:研发效能是什么?它可以实现反“内卷”?
综合练习——三子棋小游戏
Wincc报表教程(SQL数据库的建立,wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置和打印功能)
vim相关介绍(三)
容器化 | 在 Rancher 中部署 MySQL 集群
【集训DAY18】Welcome J and Z 【动态规划】
CesiumJS ^ source read [0] 2022 - article directory and source engineering structure
Worthington解离酶:胶原酶及四个基本概况
绘制几何图形
Some personal understandings about MySQL indexes (partially refer to MySQL45 lectures)
随机推荐
NumPy(二)
opencv基本图像的滤波
【集训DAY16】KC‘s Can 【动态规划】
月薪15k的阿里测试岗,面试原来这么简单
『牛客|每日一题』走迷宫
Worthington优化技术:细胞定量
定时器学习
The difference and usage of call, apply and bind
新闻文本分类
How to design and implement report collaboration system for instruction set data products——Development practice of industrial collaborative manufacturing project based on instruction set IoT operating
全国双非院校考研信息汇总整理 Part.4
账号权重怎么提升?自媒体运营的3个方法,帮你获得更多收益
ZLMediaKit源码分析 - NotifyCenter
windows下 PHP 安装
抖音短视频流量获取攻略,掌握好这些一定可以出爆款
决策树原理及代码实现
At the age of 29, I was fired from a functional test. Can't find a job after 2 months of interviews?
C陷阱与缺陷 第4章 链接 4.1 什么是链接器
ZLMediaKit源码学习——UDP
call、apply 以及 bind 的区别和用法