机器人的运动范围

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

public class Solution {
    
    private int sum = 0;
    public int movingCount(int threshold, int rows, int cols) {
        
        int[][] a = new int[rows][cols];
        recursion(threshold, 0, 0, rows, cols, a);
        return sum;
    }
    public void recursion(int max, int i, int j, int rows, int cols, int[][] a) {
        
        if(a[i][j] != 1 && sum(i, j, max)) {
            
            a[i][j] = 1;
            sum ++;
            if(i - 1 >= 0){
                
                recursion(max, i - 1, j, rows, cols, a);
            }
            if(i + 1 < rows) {
                
                recursion(max, i + 1, j, rows, cols, a);
            }
            if(j - 1 >= 0) {
                
                recursion(max, i, j - 1, rows, cols, a);
            }
            if(j + 1 < cols) {
                
                recursion(max, i, j + 1, rows, cols, a);
            }
        }else 
            a[i][j] = 1;
    }
    public boolean sum(int rows, int cols, int max) {
        
        int num = 0;
        while(rows % 10 != 0) {
            
            num += rows % 10;
            rows /= 10;
        }
        while(cols % 10 != 0) {
            
            num += cols % 10;
            cols /= 10;
        }
        if(num <= max)
            return true;
        else
            return false;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容