= 0)'Функция поиска слагаемых под нужную сумму используя динамическое программирование
                  
                  
                  'Автор MCH (Михаил Ч.) - июнь 2013
                  
                  
                  'сумма ищется по целочисленным слагаемым'в основу взят алгоритм описанный здесь
                  
                  
                  'http://forum.sources.ru/index.php?showtopic=204375'Если сумма существует, то она будет найдена
                  
                  
                  'на входе:
                  
                  
                  'arr() - одномерный массив с исходными данными'sm - искомая сумма
                  
                  
                  'ds - погрешность поиска
                  
                  
                  'на выходе одномерный массив с результатом, либо значение достигнутой точности
                  
                  
                      Dim out&(), i&, j&, k&, n&, l&, sm1&    
                  
                  
                      n = sm + 0 'с верху не даем допуск    sm1 = sm - ds
                  
                  
                          If n > 80000000 Or n < 0 Then Exit Function
                  
                  
                      ReDim a&(n)    
                  
                  
                      For i = 1 To n: a(i) = -1: Next i    
                  
                  
                      Do        For i = 1 To UBound(arr)
                  
                  
                              For j = n - arr(i) To 0 Step -1                If a(j) >= 0 Then
                  
                  
                                      k = j + arr(i)                    If a(k) = -1 Then a(k) = j
                  
                  
                                      If k >= sm1 Then Exit Do                End If
                  
                  
                          Next j, i    Loop While False
                  
                  
                          For i = sm To 1 Step -1
                  
                  
                          If a(i) >= 0 Then            k = i
                  
                  
                              Do                l = l + 1
                  
                  
                                  ReDim Preserve out&(1 To l)                out(l) = k - a(k)
                  
                  
                                  k = a(k)            Loop While k
                  
                  
                              LongSumEl = out            Exit Function
                  
                  
                          End If    Next i
                  
                  
                  End Function вот пример такого нашел
                  
                  
                
надеюсь за ссылку не дадут банк
Этот код вообще не факт, что он представляет собою то, что вам нужно.
Это предмет для изучения, я ознакомлюсь с ним и когда пойму смогу что-то для себя исчерпать
Обсуждают сегодня