00:00
那今天我们看一下第13题,机器人的运动范围,它这道题是用DFS深受问题解决的,它用一个回溯方式,那可以思想是你先看一下这个题目描述,它是地上有MN这样一个行列方格,机器人从零零坐标点开始移动,每次只能上下折移动一个方格,但是它不能进入以位数相加之和大于K的格子,这个K它比如说肯定为18,那它这种呃,三十五三十七相加出来的位数之和才18。它可以进入这样的,但是它不能进入,比如说15摄氏八这位数,这个相加是等于19,它已经超过了这个十八千,那它为了每次只能进入一格,并且除访问过的格子不能再除以访问的话,它必须要用一个单独的数组bird类型的来记录下我们所有访问过的格子,那按照这种思路。那用这种回收的方式去记录完,然后再归还他这个状态。然后可以说一下,它这个最主要的一个核心难点是要把这个所有位数的。支付位把它拆分成所有,以个位数这种类型相加计算总和,第二就是这种。只能优先。我们先解决一下这个。创建它所有的标识位问题,要记录它所访问过的格子。那就是必须要有接触到这种布尔类型的数组。刷新一下页面。
01:05
有可能会用到这个。累,先拿下了这个这个包。这个布尔类型的数组。嗯,你知道前面叫什么,就是visit,对的。以防的过的这个数据。二列形式这个的话,它说的数组的个数多少,它就用这个行列坐标来做。那这个好,重点就是发现所有的分数。另外呢,我们最后需要维特回来,他嗯,移动了多少个?格子,它能到达多少格子,就是一共多少格,到达多少个格子。我们给他一个核心的函数。那现在有了他这个case。再加上他给我们这个行列。那我们还要记住自己的当前所未来位置的行列,以及我们整个标识位的数组。那通过这些条件去。不断的。生抽等一下。我们现在给这个思方法开始。
02:00
现象。首先他这个。可以说是一个特性。这上面这个复制过来。这个in。那我们现在要给他这个方法终止的话,它要有一个边界条件,那就首先一定要控制它这个当前所在这个行是吧,要在所说控制范围之内,那就他如果这个行小于零。或者是这个行。大于等于。我们这个给定的。好程度。它就会出现问题,那列也是如此,它是如果交零的话,我是大于这个给定范围。大于等于他给的,因为是下标数零开始这九下就要返回一个零。就已经这地方没法走了,就猝死,无法理想。那另外一个条件就是说,呃,一个是他当前这个位置已经走过了,那另外一个就是说他当前这个位置是无法走的,因为它是不符合我们这个小于K置的要求,他如果是走过的话呢,需要看一下它这个当前位置的宿主。
03:07
那为了求它这个当前的坐标点的位置,那可以单独去先计算出来一下,比如说用这个ini,我们来存一下。那就是当前的这个行列。成绩。看一下他当前这个是否已经被标记为处。他如果已经是true的话,或者是就已经被标记过了,或者是被检查出来。他不符合这个条件。那也就是说要单独写个方法过来判断一下。就切写的对不对,这个上很多它的价格。先要给他这里面传一些参数,就是当前的这个配置以及我的行列。他如果说在这种情况下,他就不满足可以累加进去的,那当然就要返回这个零,现在爆红是因为没有写这个检测方法,需要单独再实现一下这个。那么这个方法它发挥的是波类型。再把这个名词搞不下。
04:02
那现在他这个就是判断。减去大于K值。我们现在既然要做累加和先给他出示一个sum条件进行用来累加的,那他要满足我们还能继续累加,具体的拆分的话,就必须要保证我们当前的这个数值。这个数值它是不等于零的。那这个前提下,我们才能一直的去给他缩小范围,他每次要去缩小的时候就必须要去。做一个区域的操作。那这个属于,然后它要的范围每次都要去呃,把当前的这个数值缩小十倍,也就是说要呃取除一个十。那这样。是不是叫做,呃,他是。他说先出完这个,再等于这个累加的话是这样。初时做完时再付给他啊,这样写简写,但是可能会造成一个阅读不方便,但是这样写应该没问题。那就没问题。
05:00
那这个列的处理也是一样的。再把这列值区域。然后再把这个例子每次都缩减。那他这样的话,就把这个sum求出来,那这个时候萨做个判断。还要满足这个范围吗?也就是说,如果它大于。我们给的这个值的话,它就会返回一个false,这样就会出现问题,他如果说啊是小于的,那就会到我们处给他返回一个正确的。大家有问题。这个就爆红,看一下是哪里。II。没什么问题,尽快写。嗯,他这个啊,这上层我们给的这个参数有问题。应该写出两个零零中要点。这样写。下面这个它就是个数。
06:01
然后现在的问题就是,呃,说要把这个当前的这个标志位。刚才已经是大概做了什么事情,刚才在判断这个标识位,现在就要把这个标识位是做最为处的,另外呢,还要不断的去累加,那就要把当前的这个。地位可以安排上,那他这个核心方法。里面要做的呢,就是把这个上下水水递归的情况放进去,首先它这个我们的K置,还有我们这个行隔列。以及当前我们要进行上下水后偏的节点,如果是上节点的话,需要先这个,诶先Rose,这是对,这是减一,然后列是正常的。然后再给我这个位置贴在复制上。写后面好像不太方便看,先写在后面写吧。直接把这个前面的复制过来一下,这加号也复制上。刚才那个是上,那我们先说这个下。然后这边。来做这个主。
07:02
最后呢,来弄这个又。这个收尾要有分号。理论上这样就切个洞。再提交可以。诶,出现点问题。我看一下是哪出现问题。实际输出11,那说明这个陈述没有生效吗?看一下是哪里出问题。刚才出现的问题应该在这两个地方,一个就是说它。前这个我们要访问的标识位的节点,它应该是呃行列当前行程,它设的列值,再加上它当前的列值去计算,这个是标点,而不是从完之后呃忘记加了一个列值,另外呢,它这个判断的时候要自己看清,那这个当前这个行比较是跟他说的行比较,它列比较熟,这地方应该是列应该是行它的总列值,所以这个地方是出错的地方。Boy。
我来说两句