美文网首页
剑指 Offer 第13题:机器人的运动范围

剑指 Offer 第13题:机器人的运动范围

作者: 放开那个BUG | 来源:发表于2022-07-06 17:16 被阅读0次

1、前言

题目描述

2、思路

这道题一看就是 dfs 的思路来做,题目的要求是能到达多少个格子,应该算各个方向的总和且不能重复。但是是从左上角出发的,实际上就是向右和向下两个方向。

3、代码

class Solution {
    public int movingCount(int m, int n, int k) {
        boolean[][] array = new boolean[m][n];

        return dfs(array, 0, 0, k);
    }

    private int dfs(boolean[][] array, int i, int j, int k){
        if(i < 0 || i >= array.length || j < 0 || j >= array[0].length || array[i][j] || numSum(i) + numSum(j) > k){
            return 0;
        }

        array[i][j] = true;
        // 为什么只要两个方向,因为是从0开始的,只能向右或者向下才不会重复
        return dfs(array, i + 1, j, k)  + dfs(array, i, j + 1, k) + 1;
    }
    

    private int numSum(int n){
        int sum = 0;
        while(n > 0){
            sum += n % 10;
            n = n / 10;
        }
        return sum;
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 第13题:机器人的运动范围

      本文链接:https://www.haomeiwen.com/subject/pgmrurtx.html