最近有在刷算法题目,现在的打算是每做完一道算法题,有点自己的想法就在博客上面记录下来。与君共勉,一起进步。
题目如下:
地上有一个m行和n列的方格,一个机器人从坐标0,0的格子开始移动。每次只能向左右上下四个方向移动,但不能进入行坐标和竖
坐标的位数之和大于K的格子,例如当k为18的时候,机器人能够进入方格(35,37)因为3+5+3+7=18,当为(36,37)就不行 因为3+6+3+7=19,大于18。
我先说一下我的解题思路吧。
首先,看到一道题目的时候得知道这道题目的问题,也就是问的是什么,我之前做题目的时候就是一直不明白这道题目主要是做什么。这跟工作学习是一个道理,工作的时候分配到一个任务,这个任务的前因后果都不知道,有的同学就开始coding了,这样下来结果很容易coding出问题。好了,言归正传。
我分析 这道题目的条件有一下几点。
1.地图的大小是 m行和n列,也即int visit[rows][cols].
2.位置是(0,0) 也就是,visit[0][0]==1,用1代表一个格子
3.向左右上下移动,就可以理解为列减加1,行减加1,用row代表当前行,col代表当前列,
4.行坐标和竖坐标的位数之和小于等于k值,numSum(row)+numSum(col)<=k
具体的实现代码就如下
package xin.