ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法|计算让汽车路程最近有多少种方法

2021-06-30 18:06:50  阅读:283  来源: 互联网

标签:终点 路程 16 地图 我们 算法 最近 方法 节点


 

问题描述

     

我们现在有一个问题,如下图:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

这里有16个节点,我们的汽车从起始点节点1出发,到终点节点16,现在相邻的两个节点距离都是相同的,汽车只能走上下左右四个方向(不可以斜着走),我们要求的汽车到终点距离最短的情况下共有多少种方式可以到达终点。

解决方案

     

首先我们先来观察这个4*4的正方形地图,由于相邻两个节点之间的距离是相同的。我们可以根据矩形的一些性质的出,汽车从节点1开始,只往右走和只往下走,最终到达节点16的所有方法的距离是相同并且最短的。那么我们如何得知一共可以有多少种方法呢?

我们可以把复杂问题简单化,找找有没有什么规律(我们只求最短路程的)。

1

比如只有一个节点的时候,到达终点的方法就只有一种。

1

2

当有两个节点的时候,还是只有一种方法。当两个节点这样放也是一样的。

1

2

我们继续增加节点:

1

2

3

4

当有4个节点的时候,到达终点的方式就有2种(默认左上角为起点,右下角为终点)。

1

2

3

4

5

6

 

1

2

3

4

5

6

再来看看这两种,第一种我们可以1到2或者1到4。如果1到2,那么到2之后就有的到了2*2的地图,2*2的地图我们也算出有2种方式到达终点因此,2*3的地图很容易就得到有3种方法到达终点。第二中也是一样,1到3之后就是2*2的地图。由此可见,我们可以将这种地图看成一张二维表,我们每走一个节点,剩下的地图就更简单。因此我们也可以从简单慢慢到复杂的。接下来我用二维表来表示一下(节点中的数字代表起点到达这里有几种方法是路程最短)。

1

1

1

1

1

2

3

4

1

3

6

10

1

4

10

20

我们将二维表从1*1慢慢增大到4*4,并且我们发现每一个节点的数字都等于它自己上面的节点的数字加上左边的节点的数字。由此可见,任何一个二维表给我们,我们都可以用这种方法的到起点到终点的所有路程最短的方法的数量。

我们在代码中可以使用递归的方法来完成我们刚刚分析出来的所有计算步骤。

   

640?wx_fmt=png

我们将二维表的横坐标和纵坐标作为参数,结果为上面的坐标的方法数加上左边的坐标的方法数。如此结果就得到我们想要的答案。

结语

     

将复杂的问题简单化分析,有简单到复杂的解决问题,一步一步的找到解题的规律,最后得到答案。

 

更多精彩文章:

 

 

 

 

 

 

 

 


   

 

 

标签:终点,路程,16,地图,我们,算法,最近,方法,节点
来源: https://blog.51cto.com/u_15281984/2960458

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有