前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器人的运动范围

机器人的运动范围

作者头像
用户1148830
发布2018-01-03 18:03:12
7270
发布2018-01-03 18:03:12
举报

【原题】 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? 【思路】 主要在于递归的一个过程,并判断符合条件的case,其它的并没有什么好说的,关键是要理解这个过程。另需特别注意:每次为了不重复计算一个单元格,需要开辟一个visited数组来保存哪些元素已经给你访问过,哪些元素还未被访问。

代码语言:javascript
复制
public class Solution {
    public int getSum(int num){
        int count=0;
        while(num!=0){
            count+=num%10;
            num/=10;
        }
        //System.out.println(count);
        return count;
    }
    public int movingCount(int threshold, int rows, int cols)
    {
       boolean[][] visited=new boolean[rows][cols];
        return movingCountCore(threshold,rows,cols,0,0,visited);
    }
    public int movingCountCore(int threshold, int rows, int cols,int row,int col,boolean[][] visited){
        int count=0;   
        System.out.println(row+" "+col);
        if(row>=0&&col>=0&&row<rows&&col<cols&&(getSum(row)+getSum(col))<=threshold&&!visited[row][col])
                {
                visited[row][col]=true;
                    count=1+movingCountCore(threshold,rows,cols,row-1,col,visited)+
                            movingCountCore(threshold,rows,cols,row,col-1,visited)+
                            movingCountCore(threshold,rows,cols,row+1,col,visited)+
                            movingCountCore(threshold,rows,cols,row,col+1,visited);
                }
            return count;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年07月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档