Цитата:
Спасибо за ссылку. Я изучил представленную там информацию, но к сожалению многое мне ещё только предстоит понять. Если вас не затруднит, помогите мне, пожалуйста.
Я упрощу своё изначальное условие. Допустим есть четыре числа: 1, 3, 6, 7. Что нужно сделать, чтобы программа сама провела перебор и выдала мне ответ на вопрос: какие из этих чисел нужно сложить, чтобы получить 8 и чтобы получить 9.
Алгоритм примерно следующий. Имеется два вектора, в одном содержатся те числа, которые нужно получить (8 и 9), в другом - числа, из которых нужно составлять эти числа (1,3,6,7). Во втором векторе числа должны быть расположены по возрастанию либо по убыванию. Делаем следующие действия:
1. Выбираем первое число из первого вектора (8)
2. Выбираем наибольшее число из второго вектора (7)
3. Сравниваем эти два числа. Если число из первого вектора (8) больше числа из второго вектора (7), то
4. Берем второе по величине число из второго вектора (6), складываем его с первым числом (7), получаем их сумму (13)
5. Если сумма (13) равна числу из первого вектора (8) то выбираем второе число первого вектора (9) и идем к п.2
6. Если сумма (13) больше числа из первого вектора (8), то вычитаем из суммы (13) второе по величине число (6), берем третье по величине число (3) и складываем его с текущей суммой (7), получаем (10), идем к п.5
7. Если при сложении последнего числа из второго вектора (1) текущая сумма меньше, чем текущее число из второго вектора (8), то обнуляем текущую сумму, выбираем второе число из второго вектора (6) и идем к п.3
Алгоритм, естесно, неполный, но как скелет пойдет...
З.Ы. Лично я для подобных вещей использовал бы какой-нить язык программирования...