回溯

参考:https://mp.weixin.qq.com/s/nMUHqvwzG2LmWA9jMIHwQQ


def check(string,track):
    # 触发结束条件
    if len(track) == len(string):
        res.append(''.join(track))
        return 
    for i in range(len(string)):
        # 排除不合法的选择
        if string[i] in track:
            continue
        # 做选择
        track.append(string[i])
        check(string, track)
        # 取消选择
        track.pop()
        
# 输入字符串
string = input()
res = [] # 收集结果
track = [] # 记录走过的轨迹
check(string,track)
for i in res:
    print(i)