请教:如何找出一个网格平面里两点间的最短距离?中间有的点必须绕过

smae 2001-10-12 06:01:19
比如:
0 1 2 3 4 5 6 7 8 9
a -------------------
b --#----------------
c --x---------x------
d ----------x--------
e ----------x-*------
f -------------------

找b1(#)到e6(*)间的最短距离,而其中有几处(x)不能通过
...全文
520 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
smae 2001-10-16
  • 打赏
  • 举报
回复
似乎要最短路径+动态规划,对吗?
y_pro 2001-10-14
  • 打赏
  • 举报
回复

哦,原来是这样的问题啊,我的理解力真是愈来愈差了 -_-#

那就听海星的吧,动态规划好了 ^o^

smae 2001-10-14
  • 打赏
  • 举报
回复
请指教,谢谢
lizhenguo 2001-10-14
  • 打赏
  • 举报
回复
请教一个问题,什么是 节点粒度
starfish 2001-10-13
  • 打赏
  • 举报
回复
同意1+1的意见,dp就可以了
smae 2001-10-13
  • 打赏
  • 举报
回复
我说得不清楚,情况是这样,请各位指教

平面里有好多对点两两相连,两点相连后,路径所包含的点就不能被其他连接路径使用,即使我开头说要绕过的,请问怎样才能作到整体最佳结果呢

比如

0 1 2 3 4 5 6 7 8 9
a -------------------
b --------#----------
c ------@-----#------
d --------*-@--------
e ----------*--------
f -------------------

**##@@各各相连,最佳结果当然是
*(d5,e5,e6)
#(b4,b5,b6,c6)
@(c3,c4,c5,d5)
如果计算顺序是*#@,有可能变成
*(d5,e5,e6)
#(b4,c4,c5,c6)
@就需要绕一个大圈


jiji007 2001-10-13
  • 打赏
  • 举报
回复
对时间要求不高的话,用广度优先实现类似floodfill试试,具体的实现有问题请问junjy@263.net。
对时间要求高的话,先一次性实现上述方法,再把每两个点的路径记下。
y_pro 2001-10-12
  • 打赏
  • 举报
回复

这个东西不是求最短距离,而是求最短路径!

是不是打算做什么游戏之类的东西啊? :)

以前我做过一个近似算法,算法的实现效率和数据结构有关。给一个“理论上的”算法设计:
将网络上所有可通达的点视为一个全连通的无向图,规模大的网络可以通过加大节点的粒度并在需要时采用分级求精的方法来提高算法的效率。如果这一步的数据组织得好,后面的事就简单了:求全连通图上的最短路径总会吧? ^o^

在实际的应用上,也可以把无向图变为有向图,或者为边加权等等,而相应的算法都是现成的,所以,建议你先想想怎么组织数据吧! ^_^

Arter 2001-10-12
  • 打赏
  • 举报
回复
是绝对值距离吗?
d=|x1-x2|+|y1-y2|
smae 2001-10-12
  • 打赏
  • 举报
回复
请问有没有这方面的资料,有源码就最好
one_add_one 2001-10-12
  • 打赏
  • 举报
回复
动态规划

33,025

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧