Leetcode剑指13:机器人的运动范围

这题其实和剑指12矩阵中的路径有一点点像
因为机器人每次只能走一格,所以在当前单元格上进行移动。所以要进行标记走过的单元格。还要保证每次走到的单元格的数位和不超过k
因此递归结束条件为:1、i、j索引越界 2、数位和相加大于k 3、已被访问过

class Solution {
    int m,n,k,res=0;
    boolean[][] visited;
    public int movingCount(int m,int n,int k){
        this.m=m;
        this.n=n;
        this.k=k;
        //不显式赋值都为false
        visited=new boolean[m][n];
        backtracking(0,0);
        return res;
    }
    public void backtracking(int i,int j){
        if(i>=m || j>=n || i<0 || j<0 || visited[i][j]){
            return;
        }
        visited[i][j]=true;
        int sum=i%10+j%10+i/10+j/10;
        if(sum>k){
            return;
        }
        res++;
        backtracking(i-1,j);
        backtracking(i+1,j);
        backtracking(i,j-1);
        backtracking(i,j+1);

    }
}
posted @ 2022-04-07 17:47  Dreamer_szy  阅读(30)  评论(0)    收藏  举报