public class Solution {
//获得机器人可以走的所有路径
public int movingCount(int threshold, int rows, int cols)
{
//标记机器人是否走过的路径
int[][]flags=new int[rows][cols];
return helper(0,0,threshold,rows,cols,flags);
}
//递归调用获得总共的行走距离
public int helper(int i,int j,int threshold, int rows, int cols,int[][]flags){
if(i<0||j<0||i>=rows||j>=cols||getSum(i)+getSum(j)>threshold||flags[i][j]==1)
return 0;
flags[i][j]=1;
return helper(i-1,j,threshold,rows,cols,flags)+
helper(i+1,j,threshold,rows,cols,flags)+
helper(i,j-1,threshold,rows,cols,flags)+
helper(i,j+1,threshold,rows,cols,flags)+1;
}
//获得一个数字的拆开数字之和
public int getSum(int k){
int sum=0;
while(k!=0)
{
sum+=k%10;
k/=10;
}
return sum;
}
public static void main(String[]args){
//System.out.println("Hello");
Solution s=new Solution();
//System.out.println(s.getSum(165));
System.out.println(s.movingCount(0,3,3));
}
}
机器人运动的范围
最新推荐文章于 2023-02-22 23:24:31 发布