Найти все комбинации чисел между min и max в php - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь выяснить наиболее оптимизированный код, который найдет список комбинаций между X и Y для данного списка, как показано ниже:

  • A = 4
  • B = 6
  • C = 3
  • D = 5
  • E = 4
  • F = 1

И скажем, X = 7, а Y = 16

Таким образом, находит все комбинации, сумма которых больше или равна X и меньше или равна Y. Значения могут повторяться.

То есть:

  • AA
  • AAA
  • AAAA
  • ABA
  • ABB
  • ABC
  • ...
  • EE
  • EEE
  • EEEE
  • EA
  • EAA

... и так далее

Конечное условие: дубликаты не должны быть включены. Например, ABB такой же, как BBA, и BAB. Таким образом, последние два не должны быть включены.

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

1 Ответ

0 голосов
/ 07 января 2019

Вещи, которые вам нужно сделать:

  1. Цикл всех наших комбинаций букв
  2. Упорядочить комбинацию в алфавитном порядке, чтобы мы могли найти дубликаты.например, ABB совпадает с BAB - см. https://stackoverflow.com/a/9912497/897266
  3. Если это дубликат, отметьте его как таковой или исключите - см. https://stackoverflow.com/a/10096034/897266
  4. Рассчитайте значение каждой комбинации - см. https://stackoverflow.com/a/49181225/897266
  5. Сравните значение каждой комбинации, чтобы убедиться, что оно находится в пределах наших мин / макс. Границ - см. https://stackoverflow.com/a/4684064/897266
  6. Если это так, сохраните его, в противном случае пометьте его как нет или исключите
  7. После цикла выведите набор комбинаций, которые проходят тест и не являются дубликатами

Я мог бы написать все это в php, но я надеюсь, что этого руководства достаточно, чтобы дать вам шанс на бойна это.

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