剑指offer:面试题13—机器人的运动范围
2019-06-11 15:06
1156 查看
题目描述
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
解决:
和矩阵中的路径类似。
[code]public int movingCount(int threshold, int rows, int cols){ if(threshold<0 || rows<=0 || cols<=0) return 0; boolean[][] flag=new boolean[rows][cols]; return judge(threshold,rows,cols,0,0,flag); } public int judge(int threshold,int rows,int cols,int i,int j,boolean[][] flag){ if(i<0 || i>=rows || j<0 || j>=cols || flag[i][j] || (numSum(i)+numSum(j))>threshold){ return 0; } flag[i][j]=true; return judge(threshold,rows,cols,i+1,j,flag)+ judge(threshold,rows,cols,i-1,j,flag)+ judge(threshold,rows,cols,i,j+1,flag)+ judge(threshold,rows,cols,i,j-1,flag)+1; } //求数位之和 public int numSum(int num){ int sum=0; while(num>0){ sum+=num%10; num/=10; } return sum; }
相关文章推荐
- 剑指offer 面试题13 机器人的运动范围
- 【剑指offer】面试题13:机器人的运动范围
- 面试题13:机器人的运动范围
- 《剑指offer》面试题67 机器人的运动范围
- 面试题13:机器人的运动范围
- 剑指Offer面试题67:机器人的运动范围 Java实现
- 《剑指Offer》学习笔记--面试题67:机器人的运动范围
- 面试题13:机器人的运动范围
- 面试题13:机器人的运动范围
- 剑指Offer(13)机器人的运动范围
- 剑指offer-面试题67-机器人的运动范围
- 《剑指offer》13.机器人的运动范围
- 11、机器人的运动范围——剑指offer——回溯法
- 剑指offer-机器人的运动范围
- 《剑指offer》机器人的运动范围(java)
- 《剑指offer》机器人的运动范围
- 面试题67. 机器人的运动范围
- 《剑指offer》:[67]机器人的运动范围
- 剑指offer--面试题67:机器人的运动范围
- 剑指offer 机器人的运动范围