В качестве первой идеи вы можете сделать очевидное, но неэффективное: пройтись по всем комбинациям и проверить, не являются ли они ожерельями, то есть являются ли они наименьшим вращением элементов (формальное определение на стр. 5 в статье выше) , Это было бы так, как вы предлагали, но вы бы выбросили все не ожерелья, как только они будут сгенерированы.
Кроме этого, я думаю, что вам придется понять эту статью (http://citeseer.ist.psu.edu/old/wang90new.html):
Т. Ван и С. Сэвидж, «Новый алгоритм генерации ожерелий», отчет
TR-90-20, факультет компьютерных наук, Государственный университет Северной Каролины
(1990).
Это не слишком сложно, вы можете разбить его, реализовав функции tau
и sigma
, как описано, и затем применив их в порядке, указанном в статье.