回溯之机器人的运动范围

来源:互联网 发布:java金额大写转换 编辑:程序博客网 时间:2024/05/18 12:02

题目

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

思路

递归,判断每一次递归
1.不能越界
2.没走过
3.符合条件

public class Solution {    public int movingCount(int threshold, int rows, int cols)    {        int[][] flag = new int[rows][cols];        return countHelper(flag, 0, 0, rows, cols, threshold);    }    public int countHelper(int[][] flag, int i, int j, int rows, int cols, int threshold){        if(i<0||i>=rows||j<0||j>=cols||flag[i][j]==1||!sum(i,j,threshold))            return 0;        flag[i][j] = 1;        return countHelper(flag, i-1, j, rows, cols, threshold)            +countHelper(flag, i+1, j, rows, cols, threshold)            +countHelper(flag, i, j-1, rows, cols, threshold)            +countHelper(flag, i, j+1, rows, cols, threshold)+1;    }    public boolean sum(int x,int y, int threshold){        int m = 0;        while(x!=0){            m += x%10;            x = x/10;        }        while(y!=0){            m += y%10;            y = y/10;        }        return m<=threshold;    }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝的小鸡小怎么办 婴儿蛋蛋一直红怎么办 婴儿吃母乳拉肚子怎么办 满月宝宝拉水怎么办 小孩子拉肚子拉水怎么办 新生儿小鸡歪的怎么办 新生儿拉屎是水怎么办 婴儿拉屎稀水怎么办 新生儿睡得少怎么办 小孩大便是水怎么办 婴儿大便稀水样怎么办 小孩晚上睡不着觉怎么办 小孩小鸡头红怎么办 儿童睡觉磨牙齿怎么办 幼儿小鸡红肿疼怎么办 宝宝小鸡淹了怎么办 小孩的小鸡肿怎么办 小鸡脚趾歪了怎么办 小鸡脖子歪了怎么办 宝宝的小鸡红怎么办 游戏联不了网络怎么办 光敏印章进水了怎么办 照片打印出来黑怎么办 企业股东签名不符怎么办 电脑签字签不了怎么办 刘海的碎发怎么办 车牌号全是单数怎么办 品正通保车险超市怎么办营业执照 车辆咨询服务门市怎么办营业执照 被互盾科技骗了怎么办 家具生意不好怎么办啊 今年家具店生意不好怎么办 奶茶店位置不好怎么办 早餐店位置不好怎么办 木工做的不好怎么办 淘宝昵称改不了怎么办 淘宝店关门售后怎么办 店里生意不好怎么办?解决方案 淘宝店铺没有生意怎么办 淘宝店做大了应该怎么办 汽车维修没生意怎么办