VB整数的拆分

VB整数的拆分...
2026年09月21日 14:55
有1个网友回答
网友(1):

Const maxn = 100
Dim a%(maxn), t%, n%
Sub comb(ByVal m%, ByVal k%, ByVal s%)
    Dim i%, j%
    For i = m To k Step -1
        a(k) = i
        If k > 1 Then
            comb i - 1, k - 1, s
        Else
            t = 0
            For j = a(0) To 0 Step -1
                t = t + a(j)
            Next
            If t = s Then
                n = n + 1: Debug.Print s; "=";
                For j = a(0) To 2 Step -1
                    Debug.Print a(j); "+";
                Next
                Debug.Print a(1)
            End If
        End If
    Next
End Sub
Sub main()
    Dim ms%, ss%, i%, h%, k%, wmin%, wmax%
    ss = InputBox("ss")
    ms = InputBox("ms")
    For i = 1 To ms
        h = h + i
        If h > ss Then wmax = i - 1: Exit For
    Next
    If i > ms Then
        Debug.Print "..."
        End
    End If
    h = 0
    For i = 1 To ms
        h = h + (ms - i + 1)
        If h > ss Then wmin = i - 1: Exit For
    Next
    For k = wmin To wmax
        a(0) = k
        comb ms, k, ss
    Next
    Debug.Print "n="; n
End Sub