扫码关注官方订阅号
如上表所示。求从第一列到第n列的最短路径,行数不定,列数不定。这种情况下用什么算法比较好
可能说的不大清楚,例如有一条路径:第一列的11,第二列的10,第三列的28那么这条路径的长度为(|10-11|)+(|28-10|)
第一列的11,第二列的10,第三列的28
(|10-11|)+(|28-10|)
认证0级讲师
第一列到第n列的最短路径(两列之间的距离为差值的绝对值,例如11与14的最短距离为4,11与10的最短距离为1)
两列之间的距离为差值的绝对值
|(11 - 14 )| = 4?|(11 - 10 | = 1;
楼主真的很抱歉不知道您在说什么。。 算第一列到第N列到最短路径?? 不能直接算嘛
相临两列之间的最短路径加起来不就是1-n的最短路径之一吗,贪婪算法?
假如 三条路的长度为 x,y,z 假如单纯的通过foreach循环可能造成复杂度为f(xy) + f(yz)
所以如和去做才能减少复杂度第一假如我x 走 y假设我们为两条路xy进行排序(小到大排序) 我从 x 的最小值(键值0)11开始走起,最近的可能是y的最小值10(键值0)做判断,假设y的值大于x的话,那么x10到y的最小路径就只有y0.假如比x10要小,那么我们继续往y的下一个键值判断y[1],直到找到比x10要大的数(假设为y[y3]),从中判断到底是y[y3]小,还是yy3-1.从中找到最小路径,假设找到0时候可以直接跳出循环
或者换一种思维,把所有的列的数据放到一个二维数轴,以第一列的数据作为原点,路线向两边扩散,只要哪个最短的线能连接所有列的数据,那么那路径应该是最短的
做好二位数轴之后,一眼看就知道15,18,1715,14,17两种都是路径最短
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
第一列到第n列的最短路径(
两列之间的距离为差值的绝对值,例如11与14的最短距离为4,11与10的最短距离为1)|(11 - 14 )| = 4?
|(11 - 10 | = 1;
楼主真的很抱歉不知道您在说什么。。 算第一列到第N列到最短路径?? 不能直接算嘛
相临两列之间的最短路径加起来不就是1-n的最短路径之一吗,贪婪算法?
假如 三条路的长度为 x,y,z 假如单纯的通过foreach循环可能造成复杂度为f(xy) + f(yz)
所以如和去做才能减少复杂度
第一假如我x 走 y
假设我们为两条路xy进行排序(小到大排序) 我从 x 的最小值(键值0)11开始走起,最近的可能是y的最小值10(键值0)做判断,假设y的值大于x的话,那么x10到y的最小路径就只有y0.假如比x10要小,那么我们继续往y的下一个键值判断y[1],直到找到比x10要大的数(假设为y[y3]),从中判断到底是y[y3]小,还是yy3-1.从中找到最小路径,假设找到0时候可以直接跳出循环
或者换一种思维,把所有的列的数据放到一个二维数轴,以第一列的数据作为原点,路线向两边扩散,只要哪个最短的线能连接所有列的数据,那么那路径应该是最短的
做好二位数轴之后,一眼看就知道
15,18,17
15,14,17
两种都是路径最短