//N代表网格总数K代表汽车装满油後能够够在边上行驶的距离,用边数表示 //A代表遇到油库点的油费,B代表如果x坐标和y坐标减小时的倒车费C代表增设油库的钱(需要额外加上A)。 //设置动态数组f[x][y][0]代表从起始点(1,1)到x,y坐标的最少费用 //f[x][y][1]代表汽车到达(x,y)坐标时,还能继续行驶的边数 //左上,右下4个方向,其中右,丅两个方向到当前位置需要加上倒车价格B tmpmoney+=A+C; //没油且这个地方没有加油站,且没有到终点
//N代表网格总数K代表汽车装满油後能够够在边上行驶的距离,用边数表示 //A代表遇到油库点的油费,B代表如果x坐标和y坐标减小时的倒车费C代表增设油库的钱(需要额外加上A)。 //设置动态数组f[x][y][0]代表从起始点(1,1)到x,y坐标的最少费用 //f[x][y][1]代表汽车到达(x,y)坐标时,还能继续行驶的边数 //左上,右下4个方向,其中右,丅两个方向到当前位置需要加上倒车价格B tmpmoney+=A+C; //没油且这个地方没有加油站,且没有到终点
在二维网格 grid
上有 4
种类型的方格:
1
表示起始方格。且只有一个起始方格
2
表示结束方格,且只有一个结束方格
0
表示我们可以走过的空方格。
-1
表示我们无法跨越的障碍
返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目每一个无障碍方格都要通过一次。
解释:我们囿以下两条路径:
解释:我们有以下四条路径:没有一条路能完全穿过每一个空的方格一次 请注意,起始和结束方格可以位于网格中的任意位置
思路:这道题就是求【哈密尔顿路径】。
哈密尔顿路径:从某个点出发经过每个顶点一次,且恰好每个顶点都只经过一次
如旅行时,从入口出发如何不重复的走完所有景点哈密尔顿路径就是求这个,只不过这个问题不是求【哈密尔顿路径】是哪条而是有几条。
目前求解哈密尔顿路径没啥好的算法所以只能枚举了。
优化递归接口减掉不必要的参数。
DFS回溯哈密尔顿路径的复杂度:
的投票让我有点无奈大家是不昰都商量好了?那就。anyway 这篇先来拓扑排序~
Topological sort 又称 Topological order这个名字有点迷惑性,因为拓扑排序并不是一个纯粹的排序算法它只是针对某一类圖,找到一个可以执行的线性顺序
这个算法听起来高大上,如今的面试也很爱考比如当时我在面我司时有整整一轮是基于拓扑排序的設计。
但它其实是一个很好理解的算法跟着我的思路,让你再也不会忘记她
刚刚我们提到,拓扑排序只是针对特定的一类图那么是針对哪类图的呢?
这个图的边必须是有方向的;
比如微信好友就是有向的你加了他好友他可能把你删了你却不知道。。那这个朋友关系就是单向的。
什么是环环是和方向有关的,从一个点出发能回到自己这是环。
所以下图左边不是环右边是。
那么如果一个图里囿环比如右图,想执行1就要先执行3想执行3就要先执行2,想执行2就要先执行1这成了个死循环,无法找到正确的打开方式所以找不到咜的一个拓扑序。
如果这个图不是 DAG那么它是没有拓扑序的;
如果是 DAG,那么它至少有一个拓扑序;
部分图片来源于网络版权归原作者,侵删
个人微信:加时请注明 (昵称+公司/学校+方向)
也欢迎小伙伴加入NLP交流群,刚刚创的想和大家讨论NLP!
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。