LINUX.ORG.RU

Всевозможный перебор элементов массива. ()


0

0

Задача такая: найти все возможные комбинации из N элементов массива simvols[L].

Делаю так:

while(i < N )

{

i = 0;

while(slovo[i] == simvols[L-1]) { slovo[i] = simvols[0]; i++; }

if(i < N)

{

slovo[i] /* Вот здесь нужно присваевать slovo[i] слейдущей элемент массива simvols -- Это то и не получается :( */

print("%s/n", slovo);

} }


напечатать все комбинации рекурсивно:

def shuffle(s,prefix=""):
    if not s:            #если массив символов пуст
        print prefix
    else:
        for c in s:
            s1=list(s)   #создается копия массива
            s1.remove(c)
            shuffle(s1,prefix+c)

можно не печатать а добавлять к глобальному списку, например

результат выполнения:
>>> shuffle("Lambda")
Lambda
Lambad
Lamdba
Lamdab
Lamabd
Lamadb
Labmda
Labmad
...
...
...
...
aadmbL
aadbLm
aadbmL

anonymous
()
Ответ на: комментарий от theserg

1. В принцепи не важно какой будет порядок.

2. Во оющем случаи необязательно.

3. Да.

nikita2
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.