机器人的运动范围
题目描述
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
思路:
这题思路比较常规,设置标记数组,放置重复计数,然后开始向四周扩展。
代码如下:
class Solution { public: int count=0;int numSum(int num) { int rev=0; while(num) { rev+=num%10; num=num/10; } return rev; } void fun(int x,int y,int threshold,int rows,int cols,bool * flags) { if(x<0||y<0||x>=rows||y>=cols||flags[x*cols+y]) return; if(flags[x*cols+y]==false&&(numSum(x)+numSum(y)<=threshold) ) { flags[x*cols+y]=true; count++; fun(x+1,y,threshold,rows,cols,flags); fun(x-1,y,threshold,rows,cols,flags); fun(x,y+1,threshold,rows,cols,flags); fun(x,y-1,threshold,rows,cols,flags); } } int movingCount(int threshold, int rows, int cols) { bool * flags=new bool[rows*cols]; for(int i=0;i<rows;i++) { for(int j=0;j<cols;j++) flags[i*cols+j]=false; } fun(0,0,threshold,rows,cols,flags); return count; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话