tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: サンプル
投稿日: 2023/02/17(Fri) 08:59
投稿者たけし
御世話になります。

新規作成したプロジェクトにサンプルを記述しまして
結果得ることができました。
こちらに、自分が作成したプログラムを組み込んで
サンプルの結果も得ることができました。

自分が作成したプログラムに
サンプルを組み込むとエラーになる要因想定できますでしょうか?

また、デバック方法がわからないのと
以下プログラムの流れ(順番)について理解できませんでしたので教えてください。
私の知るプログラムはコールしたファンクションで答えを求めて
戻った値について、加算していくなどです。

Search(i + 1, nextNode) から
Search(0, root)に移って
再びSearch(i + 1, nextNode) に戻る(?)のでしょうか?

または
earch(i + 1, nextNode) から
Search(0, root)に移って
If edge Is Nothing Then
            '見つからなかった
            Return New Integer(-1) {}
        Else
            Dim result As New Stack(Of Integer)()
            Dim e = edge
            Do
                result.Push(e.Value)
                e = e.Parent
            Loop Until e Is root
            Return result.ToArray()
        End If
実行後に
再びSearch(i + 1, nextNode) に戻る(?)のでしょうか?


宜しくお願い致します。



'探索処理
        Dim maxIndex = ordered.GetUpperBound(0)
        Dim edge As Node = Nothing  '発見した組み合わせ
        Dim Search As Action(Of Integer, Node) =
            Sub(index, parent)
                If Not edge Is Nothing Then Return  '既に発見済み
                For i = index To maxIndex
                    Dim nextValue = ordered(i)      '値を昇順に抽出
                    Dim nextNode As New Node(parent, nextValue)
                    If nextNode.Total <= targetValue Then
                        parent.Add(nextNode)        '超過しないなら抽出
                        If nextNode.Total = targetValue Then
                            edge = nextNode         '目標値に達したので探索終了
                            Return
                        Else
                            Search(i + 1, nextNode) '再帰して次の組み合わせを選ぶ
                        End If
                    End If
                Next
            End Sub

        '探索実行
        Dim root As New Node(Nothing, 0)
        Search(0, root)
        If edge Is Nothing Then
            '見つからなかった
            Return New Integer(-1) {}
        Else
            Dim result As New Stack(Of Integer)()
            Dim e = edge
            Do
                result.Push(e.Value)
                e = e.Parent
            Loop Until e Is root
            Return result.ToArray()
        End If

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。