[关闭]
@w1024020103 2017-08-15T09:37:09.000000Z 字数 482 阅读 545

Knight Shortest Path II

LintCode LeetCode DynamicProgramming


submit 1:

Screen Shot 2017-08-15 at 9.20.25 AM.png-398.8kB

ac:

Screen Shot 2017-08-15 at 9.28.57 AM.png-447.5kB

这道题看的答案,起初一直不知道该怎么初始化每个棋盘的值,以及如何确定函数,还有遇到障碍应该怎么办(想到过设置为Integer.MAX_VALUE,但没有想到最后如何判断能不能reach)。看了答案,发现无非是我的思维厌倦完整具细的分类讨论,缺乏耐心。不过除开分类讨论,确定if (!grid[i][j]) 这个条件也很关键,很巧妙地解决了遇到barrier的情况,因为if语句下面的赋值操作只有当棋盘该位置不是障碍才能进行,所以最后障碍点的值都是Integer.MAX_VALUE. 并且函数语句的判断语句也要确定上一步是不是走到了barrier, 只有上一步不是障碍的情况,这一步才可能被重新赋值,不然就依然会保持Integer.MAX_VALUE. 了解到了这一点,就很好判断最后能否reach到棋盘右下角了。如果无法到达这一点,或者只有经过障碍才能到达这一点,那么这一点的值就会是Integer.MAX_VALUE,这时候返回-1就好了。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注