-
function min(x() as integer,y() as integer) as double
dim i,j,k,a
dim m() as double
dim s() as string
dim mins as string
redim m(ubound(x),ubound(x))
redim s(ubound(x),ubound(x))
for i=1 to ubound(x)-1 '从点 0 到点 i 的距离。
m(i,0)=((x(i)-x(0))^2+(y(i)-y(0))^2)^
s(i,0)="0-" & cstr(i)
下一篇 经过k点后,起点到i点的最短距离为m(i,k),s为连接两点的线,如"0-3-2-1-4"
for k=1 to ubound(x)-2
for i=1 to ubound(x)-1
m(i,k)=10^307
for j=1 to ubound(x)-1
if instr(s(j,k-1),cstr(i))=0 then'避免稍微重复走路。
a=((x(i)-x(j))^2+(y(i)-y(j))^2)^
if a+m(j,k-1)m(i,k)=a+m(j,k-1)
s(i,k)=s(j,k-1) &"-" & cstr(i)
endifend if
next next
接下来计算通过每个点后到最后一个点的最短距离。
min=10^307
for j=1 to ubound(x)-1
a=((x(ubound(x))-x(j))^2+(y(ubound(x))-y(j))^2)^
if a+m(j,ubound(x)-2)min=a+m(j,ubound(x)-2)
mins=s(j,ubound(x)-2) &"-" & cstr(ubound(x))
end if
nextmsgbox "最短距离:" & min & vbcrlf & "最短路径:" & mins
end function
private sub command1_click
dim x(5) as integer
dim y(5) as integer
dim m as double
x(0)=0
y(0)=0
x(1)=40
y(1)=600
x(5)=1000
y(5)=1000
m=min(x,y)
end sub
-
这是蚂蚁路径。 如果找到长度很简单,只需将它们一个接一个地连接起来形成一条直线即可。 如果点 p,点 q,则距离为:
sqrt((px - qx) 2 + py - qy) 2)这允许您根据点数设置循环,并将每个循环的新点与前一个循环的末端保持距离,这加起来就是最短路径。
这是从 2008 年开始的,二次函数似乎被称为 sqr。
-
这类问题一般需要运用智能算法,如遗传算法、蚁群算法等,才能找到最优解。
-
这有点困难,这意味着没有必要按顺序排列这些平面坐标,两个相邻坐标之间的距离应该是最短的。
例如,0,0 和 1,1 之间的距离是根数 2
距离 0,0 和 2,2 是根数 8
如果三个平面坐标为 0,0、1、1、2、2,则最短路径应为 0,0、1、1、2,2,而不是 0,0、2、2、1,1
-
这个有点难! 坐下来等待结果!
-
是路线查找吗?
你可以要求我去做。
-
你想从源头上得到什么**啊,编程语言这么多,你的问题还不清楚,慢慢解释问题,我们都可以帮到你。
-
什么是a*算法,我只有dijkstra算法的**。
-
这是一个数学问题,它真的与交通或其他任何事情无关。
你应该看看关于数据结构、图论等的书籍。
而且,你自建路网的结构是别人不了解的,那它又怎么能帮你实现呢?
-
open ..for ..as ..它用于打开、读取或写入文本文件或二进制文件,数据库读/写方法不是这样的,使用 SQL 语句。 如:
从多宝乡物料中选择min(path),其中。
-
我不知道怎么说,我只想问,你开始了吗?
-
选择与表名称的距离,其中 origin='"& &"'和 destination='"& &"'"
默认情况下,备份保存在 C 盘上。
随着备份文件的增加,会出现C盘占用空间过多导致系统运行卡慢的问题,因此需要更改默认保存路径,具体步骤如下: >>>More