网格形路径(算法源码)

原创 2006年06月22日 14:54:00

'1----2----3                                                                                                                                 
'|     |      |                                            
'4----5----6
'|     |    |
'7----8----9
'田字形网格上有9个点 , 现要求的是
'编程列举出从任意一点到另外任意一点的所有路径. (每个点只能走一次)

将以下内容存为文本文件,并将文件扩展名改为 .frm

VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   3930
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   7620
   LinkTopic       =   "Form1"
   ScaleHeight     =   3930
   ScaleWidth      =   7620
   StartUpPosition =   3  '窗口缺省
   Begin VB.ComboBox Combo2
      Height          =   300
      Left            =   2160
      TabIndex        =   6
      Text            =   "Combo1"
      Top             =   2400
      Width           =   615
   End
   Begin VB.ComboBox Combo1
      Height          =   300
      Left            =   600
      TabIndex        =   5
      Text            =   "1"
      Top             =   2400
      Width           =   615
   End
   Begin VB.TextBox Text3
      Height          =   3855
      Left            =   3120
      MultiLine       =   -1  'True
      ScrollBars      =   2  'Vertical
      TabIndex        =   4
      Top             =   0
      Width           =   4455
   End
   Begin VB.CommandButton Command1
      Caption         =   "求解"
      Height          =   375
      Left            =   1920
      TabIndex        =   0
      Top             =   3240
      Width           =   1095
   End
   Begin VB.Label Label2
      AutoSize        =   -1  'True
      Caption         =   "终点:"
      Height          =   180
      Index           =   1
      Left            =   1560
      TabIndex        =   3
      Top             =   2490
      Width           =   540
   End
   Begin VB.Label Label2
      AutoSize        =   -1  'True
      Caption         =   "起点:"
      Height          =   180
      Index           =   0
      Left            =   0
      TabIndex        =   2
      Top             =   2490
      Width           =   540
   End
   Begin VB.Label Label1
      Caption         =   $"Form1.frx":0000
      Height          =   1455
      Left            =   0
      TabIndex        =   1
      Top             =   240
      Width           =   3015
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'1----2----3
'|    |    |
'4----5----6
'|    |    |
'7----8----9
'田字形网格上有9个点 , 现要求的是
'编程列举出从任意一点到另外任意一点的所有路径. (每个点只能走一次)

Dim a(2, 2) As Boolean, x, y, b(8)

Private Sub Command1_Click()
Dim wzs As Integer, mbs As Integer
    Erase a
    x = Array(-1, 0, 1, 0)
    y = Array(0, -1, 0, 1)
    wzs = Combo1.Text: mbs = Combo2.Text
    a((wzs - 1) Mod 3, (wzs - 1) / 3) = True: b(0) = wzs
    Text3 = "  从起点位置【" & wzs & "】到终点位置【" & mbs & "】的不重复的路径为:" & vbCrLf
    Call dg(1, wzs, mbs, a)
End Sub

Sub dg(t, wz, mb, a)
    Dim i As Integer, x1 As Integer, y1 As Integer, sz As Integer, j As Integer
    For i = 0 To 3
        x1 = (wz - 1) Mod 3 + x(i): y1 = (wz - 1) / 3 + y(i)
        If x1 >= 0 And y1 >= 0 And x1 < 3 And y1 < 3 Then
            If a(x1, y1) = False Then
                sz = y1 * 3 + x1 + 1: b(t) = sz
                If sz = mb Then
                    For j = 0 To t
                        Text3 = Text3 & b(j) & IIf(j < t, " → ", "")
                    Next: Text3 = Text3 & vbCrLf
                Else
                    a(x1, y1) = True
                    dg t + 1, sz, mb, a
                    a(x1, y1) = False
                End If
            End If
        End If
    Next
End Sub

Private Sub Form_Load()
    Dim i As Integer
    For i = 1 To 9
        Combo1.AddItem i
        Combo2.AddItem i
    Next
    Combo1.Text = 1
    Combo2.Text = 9
End Sub

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

三维网格精简算法(Quadric Error Metrics)附源码(一)

本文转自:http://www.cnblogs.com/shushen/p/5311828.html 我发现他的一系列文章都挺好,就是总缺点东西,所以没法执行 本文的算法来源于 Michae...

路径算法源码

  • 2015-01-22 11:07
  • 199KB
  • 下载

最短路径Dijkstra算法源码

Dijkstra算法源码Dijkstra.h文件源码#pragma once #include "stdafx.h" #include using namespace std; //arcs中arc...

A*算法求最短路径 java 源码(拿来即可用)

偶然看到最短路劲问题,在游戏、导航等领域都有所应用,觉着挺有意思的,便打算自己也实现一版 。最后选择了高效简洁的A*算法。 A*确实是一个非常优秀的实现,比起迪杰特斯拉、best-first等算法,这...

移动机器人D*Lite路径规划算法设计、仿真及源码

D路径规划算法简介 Linux系统简要说明 D程序使用说明D*路径规划算法简介D*Lite算法是Koenig S和Likhachev M基于LPA*算法基础上提出的路径规划算法。 LPA*算法本是基于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)