机器人的运动范围

前端之家收集整理的这篇文章主要介绍了机器人的运动范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

题目

地上有1个m行和n列的方格。1个机器人从坐标0,0的格子开始移动,每次只能向左,右,上,下4个方向移动1格,但是不能进入行坐标和列坐标的数位之和大于k的格子

解题

能走1直走
走过的不在走

public class Solution { int count=0; public int movingCount(int threshold,int rows,int cols) { if(0>threshold || rows<=0 || cols<=0) return count; if(threshold ==0) return 1; int[][] A = new int[rows][cols]; // 默许是 0 movingCount(A,threshold,0,rows,cols); return count; } public void movingCount(int[][] A,int k,int i,int j,int cols){ if(i<0 || i>= rows || j<0 || j>=cols) return; int s = getDigitSum(i,j); if(s<=k){ if(A[i][j] ==0){ count++; A[i][j] = 1; movingCount(A,k,i,j+1,cols); movingCount(A,j-1,i-1,j,i+1,cols); } } } public int getDigitSum(int a,int b){ return getDigitSum(a) + getDigitSum(b); } public int getDigitSum(int num){ int sum = 0; while(num >0){ sum +=num%10; num/=10; } return sum; } }

猜你在找的PHP相关文章