|
发表于 2011-8-30 11:58:58
|
显示全部楼层
令狐 发表于 2011-8-29 22:18 
你这个算法肯定不能保证路径最小。
其实这个问题还是很复杂的,找一条路径很容易,找最短路径不是那么容 ...
我再进一步提醒一下吧,你可以参考一下图论中求最短路径的算法,我们先找出对应距离为1~12的最短距离分别是7,8,4,4,1,6,1,5,3,2,5,1,。然后如果你要计算距离为13的最短路径,我们肯定无法一步达到,则我们必定需要通过形式上的两步走完这段距离,如2-11,5-8.......我们前面已经找出了1-12的最短距离,那么将其存入一个数组中,取头尾指针从两头遍历该数组,找出距离和最小的一个,就是13的最短路径,我们可以找出3-10与5-8都是13的最短路径,长度为6,。至于14,15,16.。。。。。。的距离不用我再说了吧。
最后进行复杂性分析:如果你没有足够的内存来储存一个4000维的整数数组,那么从13开始算时间代价为O(n^2),否则你直接查数组就行了。
我说的够多了,不用我再做正确性证明了吧 |
|