第6行实际上是做什么工作来检查是否已显示置换?

问题描述 投票:0回答:1

'''我知道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)
python-3.x backtracking
1个回答
0
投票

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]为0时是否used[i -1]。最后的not取反。

© www.soinside.com 2019 - 2024. All rights reserved.