Я хотел бы рассчитать все перестановки размера Y набора размера X. То есть, если бы у меня было (1,2,3) и мне нужны все перестановки размера 2, 3P2, это было бы (1,2) ( 1,3) (2,1) (2,3) (3,1) (3,2).
И GSL, и C++ STL предоставляют только xPx, которые я вижу. Может ли кто-нибудь указать мне на библиотеку C/C++, которая может это сделать, или объяснить быстрый и эффективный алгоритм памяти?
Я пытаюсь решить очень короткую криптограмму. Я вычислил две буквы и решил провести атаку грубой силы. У меня есть "ouglg ouyakl", и я проверяю каждую перестановку по очень хорошему словарю. Я исключил 2 буквы, так что это 24P7 или 1 744 364 160 вариантов, что не так уж плохо. У меня сейчас запущена программа на Perl, так что это будет интересный тест общей эффективности времени программирования + времени выполнения. :)
(Нет, я не просто хочу получить ответ на криптограмму.)