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

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

问题描述

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

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,并且我们发现每一个节点的数字都等于它自己上面的节点的数字加上左边的节点的数字。由此可见,任何一个二维表给我们,我们都可以用这种方法的到起点到终点的所有路程最短的方法的数量。

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

 

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

结语

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

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
116 4
|
3月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
61 3
|
3月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
77 0
|
2月前
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
25 1
|
2月前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
107 0
|
3月前
|
算法 索引
HashMap扩容时的rehash方法中(e.hash & oldCap) == 0算法推导
HashMap在扩容时,会创建一个新数组,并将旧数组中的数据迁移过去。通过(e.hash & oldCap)是否等于0,数据被巧妙地分为两类:一类保持原有索引位置,另一类索引位置增加旧数组长度。此过程确保了数据均匀分布,提高了查询效率。
51 2
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
82 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
89 9
|
3月前
|
存储 算法 Java
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
前缀(波兰)表达式、中缀表达式和后缀(逆波兰)表达式的基本概念、计算机求值方法,以及如何将中缀表达式转换为后缀表达式,并提供了相应的Java代码实现和测试结果。
153 0
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
|
3月前
|
机器学习/深度学习 人工智能 开发框架
【AI系统】AI 学习方法与算法现状
在人工智能的历史长河中,我们见证了从规则驱动系统到现代机器学习模型的转变。AI的学习方法基于深度神经网络,通过前向传播、反向传播和梯度更新不断优化权重,实现从训练到推理的过程。当前,AI算法如CNN、RNN、GNN和GAN等在各自领域取得突破,推动技术进步的同时也带来了更大的挑战,要求算法工程师与系统设计师紧密合作,共同拓展AI技术的边界。
141 1

热门文章

最新文章