Я был бы признателен за помощь в эффективной реализации алгоритма сравнения в C++. Моя программа получает вход, состоящий из строк целых последовательностей, и мне нужно найти, какие последовательности являются дубликатами. Но некоторые последовательности могут быть смещены в сторону, и они все равно должны быть равны. С этим я подразумеваю, например, последовательности {0, 1, 22, 5, 9} и {22, 5, 9, 0, 1} должны быть равны. Эти последовательности или количество повторяющихся последовательностей могут иметь размер.C++ эффективное сравнение целых последовательностей (в относительном порядке)
Я, кажется, не думаю о чем-либо, что в некотором роде эффективно (сравнение каждой новой строки со всеми остальными занимает слишком много времени), поэтому я надеюсь, что кто-то может помочь. Заранее спасибо!
Взгляните на [std :: is_permutation] (http://en.cppreference.com/w/cpp/algorithm/is_permutation) –
Перестановки на самом деле не то, что я имел в виду (возможно, я объяснил, что неправильно) Мне нужно числа, которые должны быть в точном orde, с возможностью сдвига. – Sia
Все ли повторяющиеся последовательности имеют одинаковые длины/элементы, только порядок отличается? Или вам нужно найти подстроки значений, которые встречаются в двух более длинных последовательностях? –