2021年8月3日 星期二

LCS VB.Net

 Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim s1 = {0, 2, 5, 7, 9, 3, 1, 2} ' s1(0) 與s2(0) 未算入

        Dim s2 = {0, 3, 5, 1, 3, 2, 8}

        Dim n = UBound(s1)

        Dim m = UBound(s2)

        Dim t(n, m) As Integer

        For i = 1 To n

            t(i, 0) = 0

        Next

        For i = 1 To m

            t(0, i) = 0

        Next

        For i = 1 To n

            For j = 1 To m

                If s1(i) = s2(j) Then

                    t(i, j) = t(i - 1, j - 1) + 1

                Else

                    t(i, j) = Math.Max(t(i - 1, j), t(i, j - 1))

                End If

            Next

        Next

        MsgBox(t(n, m))

    End Sub

End Class

LIS VB.Net

 Public Class Form1

    Dim s = {1, 6, 3, 4, 8, 5, 2, 7, 9}

    Dim ll(8) As Integer

    Sub lis()

        For i = 0 To UBound(s) 'Ubound = length -1

            ll(i) = 1

        Next

        For i = 0 To UBound(s)

            For j = i + 1 To UBound(s)

                If s(i) < s(j) Then

                    ll(j) = Math.Max(ll(j), ll(i) + 1)

                End If

            Next

        Next

    End Sub


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        lis()

        MsgBox(ll.Max)

    End Sub

End Class

BFS VB.Net

 Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim fileContents As String

        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\dfs.txt")

        Dim lines = fileContents.Trim().Split(vbNewLine)

        Dim gdict As New Dictionary(Of String, Array)

        For i = 0 To lines.Length - 1

            Dim cols = lines(i).Split(":")

            Dim sep = {Chr(34), Chr(39), " ", "[", "]", ","}

            Dim nod = cols(0).Trim().Split(sep, StringSplitOptions.RemoveEmptyEntries)

            Dim cnod = cols(1).Split(sep, StringSplitOptions.RemoveEmptyEntries)

            gdict.Add(nod(0), cnod)

        Next


        bfs(visited, gdict, "5")

        MsgBox(ss)

    End Sub


    Dim visited As New ArrayList

    Dim ss = ""


    Sub bfs(ByRef visited, ByRef graph, ByVal nod)

        Dim q As New Queue

        q.Enqueue(nod)

        While q.Count > 0

            Dim s = q.Dequeue()

            ss = ss & s & " "

            For Each neighbor In graph(s)

                If Not visited.contains(neighbor) Then

                    visited.add(neighbor)

                    q.Enqueue(neighbor)

                End If

            Next

        End While

    End Sub

End Class



DFS VB.Net sample

 Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim fileContents As String

        fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\dfs.txt")

        Dim lines = fileContents.Trim().Split(vbNewLine)

        Dim gdict As New Dictionary(Of String, Array)

        For i = 0 To lines.Length - 1

            Dim cols = lines(i).Split(":")

            Dim sep = {Chr(34), Chr(39), " ", "[", "]", ","}

            Dim nod = cols(0).Trim().Split(sep, StringSplitOptions.RemoveEmptyEntries)

            Dim cnod = cols(1).Split(sep, StringSplitOptions.RemoveEmptyEntries)

            gdict.Add(nod(0), cnod)

        Next

        dfs(visited, gdict, "5")

        MsgBox(ss)

    End Sub


    Dim visited As New ArrayList

    Dim ss = ""


    Sub dfs(ByRef visited, ByRef graph, ByVal nod)

        If Not visited.contains(nod) Then

            ss = ss & nod & " "

            visited.add(nod)

            For Each neighbor In graph(nod)

                dfs(visited, graph, neighbor)

            Next

        End If

    End Sub

End Class

dfs.txt
'5' : ['3','7'],
'3' : ['2', '4'],
'7' : ['8'],
'2' : [],
'4' : ['8'],
'8' : [],



2021年8月1日 星期日

VB.Net TreeView TreeNode


 

 Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated

        Dim t(13) As TreeNode

        Dim r = "0,1,2,3,4,5,6,7,8,9,10,11,12".Split(",")

        Dim rr = {"", "公司", "部門一", "部門二", "分部一", "分部二", "分部一", "分部二", "人員一", "人員二", "人員一", "人員二", "十二"}

        t(r(1)) = TreeView2.Nodes.Add(rr(1))

        For i = 2 To 12

            t(i) = t(i \ 2).Nodes.Add(rr(i))

        Next

        TreeView2.ExpandAll()

    End Sub