Ах, я думаю, я понимаю, что вы говорите.Если я вас правильно понимаю, вы ищете все возможные способы заглавных букв в строке, чтобы все буквы были не одного и того же - то есть, учитывая abc, вы бы получили
abC aBc aBC Abc AbC ABc
Но не
abc ABC
Поскольку все буквы в этих версиях имеют одинаковый регистр.
Если это то, что вам нужно, количество способов сделать это внепустая строка длины n задается как 2 n - 2. Интуитивно, суть этого заключается в следующем.Для заданной строки из n букв существует 2 n различных способов заглавных букв всех букв в этой строке, поскольку для каждого символа независимо от остальных эта буква может находиться в одном из двух состояний (верхний регистр)или нижний регистр).Если вы рассмотрите все эти комбинации, есть две, которые вы хотите запретить: версия, в которой все буквы прописные, и версия, где все буквы строчные.
В вашем вопросе выупомянул, что число комбинаций из n-элементной последовательности равно n !.Это не совсем верно.Нет! перестановок последовательности из n элементов (при условии, что каждый элемент отличается).Например, есть 3!= 6 перестановок последовательности abc:
abc acb bac bca cab cba
Тот факт, что существует шесть способов заглавных букв трехбуквенной последовательности без одинаковой прописной буквы для всех букв и наличие шести перестановок abc, является полным совпадением,Если вы посмотрите на другие термины серии, вы увидите, что они совпадают только в двух местах (2 и 3):
n = 1 2 3 4 5 6
Permutations (n!) 1 2 6 24 120 720
Mixed-case capitalizations (2^n - 2) 0 2 6 14 30 62
Если вы допускаете больше случаев, чем просто верхний и нижний (скажем, kразличные версии), то вы можете обобщить это, чтобы получить значение k n - k, поскольку существует k n различных комбинаций, из которых k из них будут иметь одинаковую заглавную букву.
Надеюсь, это поможет!