vb-VB实现最短路径问题,代码哪里不对

问题描述

VB实现最短路径问题,代码哪里不对

本来是通过组合框输入起始站,现在直接换成常数后提示下标越界,大家给看看为什么?
Private Sub CommandSearch_Click()
Dim iCurrename As Integer
Dim iEndName As Integer
Dim iStartName As Integer
Dim sPathList As String

 '开始搜索
If Me.ComboStart.ListIndex = 0 Or Me.ComboEnd.ListIndex = 0 Then
    MsgBox "请选择“起点站”或“终点站”!"
    Exit Sub
End If
iEndName = Me.ComboEnd.ListIndex
iCurrename = iEndName
iStartName = Me.ComboStart.ListIndex
sPathList = ""

Call SearchPath(Me.ComboStart.ListIndex, Me.ComboEnd.ListIndex)

'显示结果
Do While iCurrename <> iStartName
    If (iPath(iCurrename) = 0) Then
        Me.TextResult.Text = "没有路: " & sAddList(iStartName) & " 到" & sAddList(iEndName) & "!" & vbCrLf
        Exit Sub
    End If
    sPathList = sAddList(iCurrename) & sPathList
    GetResult (iCurrename)
    sPathList = " -> " & sPathList
    iCurrename = iPath(iCurrename)
Loop
sPathList = sAddList(iStartName) & sPathList
GetResult (iStartName)
' /* 打印显示距离 */
sPathList = "距离是: " & iPathLength(iEndName) & vbCrLf & sPathList

Me.TextResult.Text = sPathList

End Sub
Public Function SearchPath(iStartName As Integer, iEndName As Integer)
'iStartName '开始点
'iEndName '结束点

Dim iCurrename As Integer
Dim iTotalLength As Integer

Dim bCanSearch As Boolean

iCurrename = iStartName
'MsgBox iCurrename
iTotalLength = 0             '设定开始距离
bCanSearch = True

Dim min As Long

'//下面的代码初始化其他数组
For iLoop = 1 To iAddCount
    '初始化选择点:1表示没有选中,0表示被选中
    iAddSelect(iLoop) = "False"
    iPathLength(iLoop) = NoPath
    iPath(iLoop) = 0
Next

'从图上显示当前第一个节点被搜索
iAddSelect(iCurrename) = "True"
iPathLength(iCurrename) = 0
iResultSize = 0
 Do While bCanSearch
    '/* 更改数组中的距离 */
    For iLoop = 1 To iAddCount
        If ((iAddMap(iCurrename, iLoop) <> 0) And _
             ((iPathLength(iLoop)) > (iAddMap(iCurrename, iLoop)) + iTotalLength)) Then
            iPathLength(iLoop) = iAddMap(iCurrename, iLoop) + iTotalLength
            iPath(iLoop) = iCurrename
        End If
    Next iLoop

    min = NoPath

    For iLoop = 1 To iAddCount
        If ((iPathLength(iLoop) < min) And (iAddSelect(iLoop) = "False")) Then
            min = iPathLength(iLoop)
            iCurrename = iLoop
            iTotalLength = iPathLength(iLoop)
        End If
    Next iLoop
    iAddSelect(iCurrename) = "True"

    '/* 处理完成所有的顶点之后停止 */
    If (min = NoPath) Then
        bCanSearch = False
    End If
    '测试代码
    DoEvents
Loop

End Function

解决方案

数组定义在哪呢,哪越界呢。
参考
http://blog.sina.com.cn/s/blog_4940204c010002q7.html

时间: 2024-09-16 17:39:46

vb-VB实现最短路径问题,代码哪里不对的相关文章

用VB生成DLL封装ASP代码一个例子:连接access数据库等

access|封装|数据|数据库 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升.这个例子中被封装的dll文件可以隐藏access数据库的实际路径. VB生成的DLL封装ASP代码来连接数据库(Access). 本文用一个最简单的连接access数据库的例子来说明如何将asp代码封装为dll文件. 我们用vb,最常见的方式来封装asp代码. 我们需要封装的对象如下: 'Proconn.aspdim ProConnset ProConn=Server.CreateO

游戏开发-用vb.net编写五子棋游戏代码详解

问题描述 用vb.net编写五子棋游戏代码详解 vb.net初学者,求五子棋游戏编写步骤详解代码解释还有ai算法的构建 解决方案 http://download.csdn.net/detail/winter_ling/2469095http://download.csdn.net/detail/jinsenianhua2012/4286183http://download.csdn.net/detail/qwciyuan/3362601 解决方案二: 五子棋的核心算法 五子棋是一种受大众广泛喜爱

传参-刚开始学习VB.NET 怎么把逻辑代码和业务代码分开写?Form可以调用,代码本身可能会有一点问题

问题描述 刚开始学习VB.NET 怎么把逻辑代码和业务代码分开写?Form可以调用,代码本身可能会有一点问题 From1 Imports System.Data Imports System.Data.OracleClient Imports System.Text Public Class Form1 #Region "定义变量" Private ConnString As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(

vb-请教一个VB做的出入库代码问题

问题描述 请教一个VB做的出入库代码问题 我在用VB做一个出入库的程序,我想在出库的时候让药品按有效期的长短来出库(注:库里有不同批次的药品).比如我想一次出库20盒,库存里有三种批次的药品,第一个批次是2013年的2盒,每二批次的是2014年的10盒,第三批次是2015年的30盒:这样,我想先出每一个批次的2盒,再出每二批次的10盒,再出第三批次的8盒,(三个批次共20盒),该如何写代码.谢谢! 解决方案 如果库存量不大于2就出库2盒,如果大于2并且小于10就出库10盒,如果大于10就出库8.

VB.NET中如何用代码激活CapsLock等键

问题描述 VB.NET中如何用代码激活CapsLock等键我知道获得键的状态代码为MsgBox(My.Computer.Keyboard.CapsLock)这是GET请问如何修改设置set呢?谢谢了 解决方案 解决方案二:试试:SendKeys.Send("{CapsLock}").不过,效果可能只有一次,还是一直有效,你自己试试.解决方案三:引用楼主webcivics的回复: VB.NET中如何用代码激活CapsLock等键我知道获得键的状态代码为MsgBox(My.Computer

vb.net 数据排序倒序代码

vb.net 数据排序倒序代码 imports system public class mainclass         shared sub main()         dim myarray as [string](  ) = {"w", "i", "a", "t"}         console.writeline("display myarray...")         displayarr

vb.net 数据导入excel代码

vb.net 数据导入excel代码 这是一款简单的由vb.net把数据库教程的数据导入到execel实例哦,如果你正在找相关的.net把数据导入到数据表的话,这是一款完整的可用代码. imports system.data imports system.data.sqlclient public class form1   dim app as new excel.application   dim exbook as excel.workbook   dim exsheet as excel

迷宫的最短路径算法 代码(C++)

题目: 给定一个大小为N*M的迷宫. 迷宫由通道和墙壁组成, 每一步可以向邻接的上下左右四格的通道移动. 请求出从起点到终点所需的最小步数. 请注意, 本题假定从起点一定可以移动到终点. 使用宽度优先搜索算法(DFS), 依次遍历迷宫的四个方向, 当有可以走且未走过的方向时, 移动并且步数加一. 时间复杂度取决于迷宫的状态数, O(4*M*N)=O(M*N). 代码: /* * main.cpp * * Created on: 2014.7.17 *本栏目更多精彩内容:http://www.bi

创建 表-mysql创建表错误,下面的代码哪儿不对?

问题描述 mysql创建表错误,下面的代码哪儿不对? CREATE TABLE ACCOUNT( ID INT(4) CONSTRAINT ACCOUNT_ID_PK PRIMARY KEY, RECOMMENDER_ID INT(4) CONSTRAINT ACCOUNT_RECOMMENDER_ID_FK REFERENCES ACCOUNT(ID), LOGIN_NAME VARCHAR(30) NOT NULL CONSTRAINT ACCOUNT_LOGIN_NAME_UK UNIQU