Что на самом деле делает строка 6, чтобы проверить, отображается ли перестановка? - PullRequest
0 голосов
/ 17 июня 2020

'' 'Я знаю, что второе условие в операторе if проверяет уже выполненную перестановку в случае, если на входе есть повторяющиеся элементы. Но как именно это делается! '' '

def permutation(input_list, partial, used):
    if len(partial) == len(input_list):
        print(partial)
    else:
        for i in range(0, len(input_list)):
                if not used[i] and not (input_list[i] == input_list[i - 1] and not used[i - 1]):
                used[i] = True
                partial.append(input_list[i])
                permutation(input_list, partial, used)
                used[i] = False
                partial.pop(len(partial) - 1)


nums = [2,1,2,5]
used = [False for _ in range(0, len(nums))]
permutation(nums, [], used)

1 Ответ

0 голосов
/ 17 июня 2020

Оператор not used[i] возвращает False для всех случаев, кроме случаев, когда used[i] равно 0.
input_list[i] == input_list[i - 1] and not used[i - 1] проверяет, input_list[i] == input_list[i - 1] когда used[i -1] равно 0. И последний not отрицает это. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...