MaximuS_G
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору SERGE_BLIZNUK Цитата: Вопрос такой - ограничения на количество чисел и на вложенность (т.е. сколько слагаемых в найденном сочетании может быть) есть? | Количество чисел - 11 - это то, что требуется в данный момент. Второй вопрос, что я не могу понять как составлять эти комбинации... как считать знаю из комбинаторики, а как составлять... К вопросу, если можна давайте установим ограничение 11 чисел. По-поводу вложенности. Я думаю начиная от одного (то есть число само уже сразу может входить в интервал, или сразу выпадать из него - как например 5000) и заканчивая всеми, то есть 11-ти. В данной задачи видно, что навряд ли будет больше 5ти, так как сумма наименьших пяти равна 3350, если добавить шестой = 4350, уже вылетает... по-этому если это имеет значения не для производительности, а для написания, то можем задать 5. Итак ограничения: кол-во чисел - 11, количество вложенных чисел - 5. Цитата: И ещё - задача стоит, чтобы найти варианты, или чтобы найти ВСЕ возможные варианты? | Мне кажется, что любое дело надо доводить до конца, поэтому желательно найти ВСЕ. Вот такой код мне предложили на другом сайте: Код: Const n& = 11, la& = 3888, ra& = 4176 Dim a(1 To n) a(1) = 1000: a(2) = 3000: a(3) = 2200: a(4) = 1000: a(5) = 5000: a(6) = 300 a(7) = 250: a(8) = 1000: a(9) = 800: a(10) = 1400: a(11) = 2300 Dim c(1 To n) Dim i&, j&, p&, m&, r&, u&, s$ For m = 2 To 11 For i = 1 To m c(i) = i Next p = n - m: r = m - 1 L1: u = 0: s = "" For i = 1 To m u = u + a(c(i)) s = s & a(c(i)) & "(" & c(i) & ")+" Next If u >= la And u <= ra Then Debug.Print Left$(s, Len(s) - 1) & "=" & u End If For i = m To 1 Step -1 If c(i) <> p + i Then c(i) = c(i) + 1 For j = i To r c(j + 1) = c(j) + 1 Next GoTo L1 End If Next Next | Вот небольшой комментарий автора: "Здесь строятся сочетания не самих элементов, расположенных в массиве, а их индексов. После получения сочетаний легко перейти к самим элементам" Пока ни как не соображу как же сочетания формируются... мне бы на простом пример... вот есть 4 числа... вот так их складываем... |