Daniro_San
@Daniro_San
Программист

Как перебрать все сочетания?

О сочетаниях я знаю отсюда.
Передо мной сейчас стоит такая задача - есть набор чисел. Из них нужно выбрать сочетание, сумма цифр которого нечётна и наибольшая среди нечетных сочетаний. Каким алгоритмом можно перебрать все сочетания? В какую сторону копать?
  • Вопрос задан
  • 564 просмотра
Пригласить эксперта
Ответы на вопрос 3
AnnTHony
@AnnTHony
Интроверт
Зачем перебирать все сочетания?
Отсортировать набор цифр.
Взять указанное количество самых больших
Если их сумма четная - заменить самую младшую на предыдущую из списка пока сумма не станет нечетной.
n = [1, 5, 3, 4, 9, 7, 6]
k = [3]
n_sort = [1, 3, 4, 5, 6, 7, 9]
k_sum = 6 + 7 + 9 = 22 - четное число
Меняем 6 на 5, k_sum = 5+ 7 + 9 = 21 - PROFIT!
Ответ написан
x67
@x67
1. Анализ. Каковы свойства появления нечетных чисел? Ч+Ч=Ч; НЧ+НЧ=Ч; НЧ+Ч=НЧ. Бинго! Исходя из вышесказанного, нам нужно сложить сколь угодно четных чисел и нечетное количество нечетных чисел.
2. Определяемся со свойствами наборов. Сколько цифр? А цифры ли это или числа?
3. Когда задача будет однозначно и четко поставлена, не составит труда сначала отфильтровать наборы, которые не дают в сумме нечетное число, затем те, чьи цифры/числа не являются достаточно высокими (выше среднего, к примеру), а из оставшегося множества уже простым перебором найти наибольшую сумму.
Ответ написан
Комментировать
Вообще сочетания можно for'ом или рекурсией обойти.
Но чувствуется, что задача должна решаться проще, хотя по тому, что написано в вопросе сложно судить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы