Как перечислить сумму количества значений в массиве для количества раз и найти наиболее распространенный результат? - PullRequest
0 голосов
/ 23 февраля 2020

У меня 6 разных номеров, и у меня их 5. Я должен выбрать 5 чисел случайным образом из этих 30 чисел (без повторений). Код, который я ищу, находит наиболее частое значение суммы из 17.100.720 возможностей, которые у меня есть, в виде P (30,5) = 17.100.720.

Как мне написать функцию, которая перечисляет все суммирует возможности и возвращает значение, которое встречается чаще всего (мне не нужно видеть список сумм, все, что мне нужно, это значение, которое я ищу)?

Язык, на котором оно написано, делает Неважно, хотя я предпочел бы иметь возможность запустить его онлайн.

Имея знания Javascript, я уже могу выбрать только 5 чисел случайным образом из 30 чисел, удалить число, выбранное из массива , возьмите их сумму, сбросьте массив и повторите этот процесс 17.100.720 раз.

1 Ответ

0 голосов
/ 25 февраля 2020

Если я правильно понимаю вашу проблему, вы можете решить ее с помощью динамического программирования c.

Сделать 2D таблицу размером 6 x Maxsum.

Ячейка A[k][s] будет содержать несколько вариантов для получения суммы s с k слагаемыми из вашего списка.

Заполните первую ячейку A[0][0] = 1

Заполните таблицу для каждого значения v in list

if (A[k-1][s-v] > 0)
     A[k][s] = A[k-1][s-v] + 1

Обратите внимание, что проход по таблице должен начинаться go с конца, чтобы избежать двойного счета одного и того же элемента.

В в конце проверьте максимальный счетчик в 5-й строке таблицы

Если MaxSum слишком велик, размер таблицы может быть слишком большим - в этом случае стоит использовать карту вместо 2D-массива. В этом случае можно предпочесть оставить две карты - до текущего элемента и после добавления текущего элемента и использовать одну на следующем шаге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...