这样的查询,没人会写吗?长了点,但很有规律,耐心点看好吗?(200分)

  • 主题发起人 主题发起人 wishme3
  • 开始时间 开始时间
W

wishme3

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构如下:
起点 终点 距离
A E 100
A B 20
A C 30
B E 50
C E 60

以A为起点到E有三条路:
A直接到E为100公里
从A到B为20公里,再从B到E为50公里,共70公里
从A到C为30公里,再从C到E为60公里,共90公里

根据算法选择A为起点到E最短路程,步骤如下:
(1)、我先选出以A为起点的路,得到
起点 终点 距离
A E 100
A B 20
A C 30

取出最小的一条:
起点 终点 距离
A B 20
其它两条记录要参与下次比较

(2)、再以上面的终点B为起点查找,找到一条记录
起点 终点 距离
B E 50
加上前面两条记录,共三条
A E 100
A C 30
B E 50

再取出最小的一条
A C 30
其它两条记录要参与下次比较

(3)、再以上面的终点C为起点,找到一条记录
起点 终点 距离
C E 60
加上前面上面的另外两条记录,共三条
A E 100
B E 50
C E 60
再取最小一条:
B E 50
这时,终点为E,表示查找完成
结果为 A-B-E,为20+50=70


要的结果就是:路线:A-B-E,距离:70

怎样把它写成程序?如果点多的话,怎样合理的循环实现该功能?
 
我只是随便看了一下,也没怎么具体研究,我想应该是把他转化成树,利用树的原理
来做检索。那么我们做的第一步就是定义一个起点,就A好了。找出所以A可以一次到达
的点,这里为BCE,去除没有下结点的点且不为E的。然后继续,一直找到没有下界点且
是E的所以路径,穷举就行了。
上面说的和你的差不多,但我想我们是不是可以反过来呢,找出所有指向e的点,再从a点
起利用上法找有儿子且为e的点,当中间的结点相等,则此路可通。我想这可能是一条比较
省的方法。实现……我想也不是很难的。
 
可以查看一下有关遗传算法的相关资料,其中有很多很好的处理方法
 
这个是最优解和贪婪法,你可参考数据结构的书。
 
这种例子在数据结构教材中有好多,你看看书吧
 
后退
顶部