Поскольку вам удалось найти комбинации, я просто сосредоточусь на их группировании.Прежде всего, нам нужно убедиться, что мы знаем, когда две группы равны.
{1,4} равно {1,4}
{1,4} равно{4,1}?
{1,4} отличается от {1,1,1,2}
Итак, вам необходимо убедиться, что ваша программа может работать правильносравнение.Для этого вам потребуется сгенерировать «подпись» комбинации, то есть значение (например, строку), поэтому, когда вас интересует, равны ли две группы, вы сравниваете их сигнатуру.Вам понадобится структура данных (Карта), состоящая из единственного числа и номера, в которой будут храниться все обнаруженные подписи и номер их появления.Всякий раз, когда вы получаете комбинацию, вам нужно будет выяснить, содержит ли карта данную подпись.Если так, увеличивайте вхождение.Если нет, добавьте подпись на карту со значением 1. После того, как вы нашли все комбинации, найдите запись на карте с наибольшим значением, и это будет решением.
Теперь давайте вернемся квопрос о том, равняется ли
{1,4} {4,1}?
Если они равны, то вам нужно будет отсортировать элементы комбинации, прежде чем создавать ее сигнатуру,Если они не равны (это означает, что мы имеем дело с вариациями), вам не нужно сортировать элементы, просто сгенерируйте подпись в их необработанном виде.