Надеюсь, это место лучше всего подходит для такого рода вопросов.
У меня следующая проблема (думаю, она сложнее, чем кажется).
Я используюДвухсторонняя очередь (deque) структура данных строк.deque extractions;
Deque содержит только N различных строк, каждая строка повторяется M раз в случайном порядке, так что длина deque равна N * M, например, предположим, что M = 4,N = 2, string1 = "A", string2 = "B":
extractions[1] = "A"
extractions[2] = "A"
extractions[3] = "B"
extractions[4] = "B"
extractions[5] = "A"
extractions[6] = "B"
extractions[7] = "B"
extractions[8] = "A"
Я нахожусь в поиске алгоритма, который позволяет мне найти интересную конфигурацию, в которой нет двух последовательных равныхэлементов, в этом случае должно быть только два решения: «А», «В», «А», «В», «А», «В», «А», «В» и «В»,«А», «В», «А», «В», «А», «В», «А».Для «интересной» конфигурации я имею в виду конфигурацию, не просто заданную числом вложенных циклов N.
Очень глупое решение, которое я реализовал, состоит в том, чтобы случайным образом перетасовать колоду с std::random_shuffle
до тех пор, пока не произойдет последовательное равноеэлементы найдены, но это и глупо, и медленно, это больше похоже на bogosort ...
Очевидно, что максимальное увеличение расстояния редактирования между строками должно быть лучше.Какой-то намек?