• 剑指offer——机器人的运动范围


    题目链接:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?

    解题思路:

    自己做递归的题就是不行,记住这个题吧,日狗了。

     1 public class Solution {
     2     public int movingCount(int threshold, int rows, int cols)
     3     {
     4         int [][] flag= new int [rows][cols];
     5         return moving(threshold,rows,cols,flag,0,0);
     6     }
     7     
     8     public int moving(int threshold, int rows,int cols,int [][]flag,int i,int j)
     9     {
    10         if(threshold<=0||i>=rows || j >= cols || i<0 || j< 0 || flag[i][j]==1|| sum(i)+sum(j)>threshold)
    11         {
    12             return 0;
    13         }
    14         
    15         flag[i][j]=1;
    16         
    17         return moving(threshold,rows,cols,flag,i-1,j)
    18             +moving(threshold,rows,cols,flag,i,j-1)
    19             +moving(threshold,rows,cols,flag,i+1,j)
    20             +moving(threshold,rows,cols,flag,i,j+1)
    21             +1;
    22     }
    23     public int sum(int number)
    24     {
    25         if(number==0) return number;
    26         int summary=0;
    27         while(number>0)
    28         {
    29             summary=summary+number%10;
    30             number = number/10;
    31         }
    32         return summary;
    33     }
    34 }
  • 相关阅读:
    场景设计法
    判定表驱动分析方法
    错误推测法
    Ubuntu软件包管理命令全面集锦
    MySql模糊查询
    VC++ 列表控件的使用方法
    Java笔记原生数据类型【二】
    DEDECMS 关键字不能小于2个字节!
    Linux 使用yum install安装mysql登陆不上解决办法
    PHP数据学习-二维数组【3】
  • 原文地址:https://www.cnblogs.com/wangyufeiaichiyu/p/10896509.html
Copyright © 2020-2023  润新知