机器人的运动范围

题目描述

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?

思路

与上一题类似,注意这次返回的是int,还要考虑怎么把位数上的数字加起来。先创建一个等大的boolean数组,用来记录走过的路线,然后去扫描当前节点的上下左右,注意要有判断,越界的,已经走过的,不符合要求的都应该返回false,确定递归的结束条件,能进入下一步递归的条件,明确递归方法的作用,开始递归吧!

个人解法
public class Solution {
    public int movingCount(int threshold, int rows, int cols)
    {
        
        //用来判断是否走过这个格子 b数组默认是false
        boolean b[]=new boolean[rows*cols];
        //从00开始递归
        int count=getCount(threshold,rows,cols,0,0,b);
        return count;
        
    }
    public int getCount(int threshould,int rows,int cols,int row,int col,boolean b[]){
        //index得到的是矩阵中的数在一维数组中的位置
        int index=row*cols+col;
        int count=0;
        //如果超出界限,或者大于数字之和或者已经走过了就返回0
        if(row<0||col<0||row>=rows||col>=cols||b[index]||getSum(row)+getSum(col)>threshould){
            return 0;
        }
        //没进入上面的判断,说明这个格子是机器人可以走的 把b[index]标记为true
        b[index]=true;
        
        //开始递归,注意求的是多少个格子,格子一开始从0,0开始,所以加一,然后往这个格子的上下左右递归
       count= 1+getCount(threshould,rows,cols,row-1,col,b)+
            getCount(threshould,rows,cols,row+1,col,b)+
            getCount(threshould,rows,cols,row,col+1,b)+
            getCount(threshould,rows,cols,row,col-1,b);
        return count;
    }
    
    //得到数字各个位数上数字之和
    public int getSum(int a){
        int sum=0;
        while(a>0){
            sum+=a%10;
            a=a/10;
        }
        return sum;
    }
    
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目 地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不...
    Longshihua阅读 300评论 0 1
  • 题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格...
    qming_c阅读 627评论 0 0
  • 地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能...
    修司敦阅读 385评论 0 0
  • 题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动...
    zhouwaiqiang阅读 254评论 0 0
  • 根据Solomon Northup在1853年所著传记小说《为奴十二年》改编。该作是作者亲身经历,他本是一个...
    图山阅读 454评论 0 0

友情链接更多精彩内容