Я пишу алгоритм для генерации всех возможных перестановок массива такого типа:
n = длина
k = количество единиц в массиве
Таким образом, это означает, что если у нас есть k 1, у нас будет n-k 0 в массиве.
Например:
n = 5;
k = 3;
Итак, очевидно, что для этого массива есть 5 возможных 3 перестановок, потому что
n! / (k! (n-k)!
5! / (3! 2!) = (5 * 4) / 2 = 10
возможные значения для массива
Вот все значения:
11100
11010
11001
10110
10101
10011
01110
01101
01011
00111
Полагаю, мне следует использовать рекурсивные алгоритмы, но я просто этого не вижу. Я пишу этот алгоритм на C ++.
Буду признателен за любую помощь!