Например: Array: 4,3,0,1,5 {Предположим, что все цифры >= 0. Также каждый элемент в массиве соответствует цифре. то есть каждый элемент в массиве находится между 0 и 9.}
В приведенном выше массиве наибольшее число: 5430 {используя цифры 5, 4, 3 и 0 из массива}
Мой подход:
Для делимости на 3 нам нужна сумма цифр, делящихся на 3. Таким образом,
- Шаг-1: удалите все нули из массива.
- Шаг-2: эти нули появятся в конце. {Поскольку они не влияют на сумму, и мы должны найти наибольшее число}
- Шаг 3. Найдите подмножество элементов массива (исключая нули), чтобы число цифр было МАКСИМУМ, а также что сумма цифр MAXIMUM и сумма делится на 3.
- STEP-4: требуемая цифра состоит из цифр в найденном выше наборе в порядке убывания.
Итак, основным этапом является STEP-3, т.е. как найти такое подмножество, чтобы оно содержало МАКСИМАЛЬНОЕ возможное число элементов, так что их сумма равна MAX и делится на 3.
Я думал, может быть, Step-3 может быть сделан GREEDY CHOICE, чтобы взять все элементы и продолжать удалять наименьший элемент в наборе, пока сумма не будет делиться на 3.
Но я не уверен, что этот выбор GREEDY будет работать.
Скажите, правильный ли мой подход. Если да, то предложите, как сделать Step-3?
Кроме того, предложите любой другой возможный/эффективный алгоритм.