PYTHON 中的递归使所有可能的排列不重复
RECURSION in PYTHON to make all possible PERMUTATIONS without repeat
我用递归写了一段代码,遵循以下规则:
规则
2 个输入:
- 第一个输入:定义输出的长度,作为一个整数。
- 第二个输入:将用户想要的所有元素写成一个字符串,这将
成为输出的一部分。
对于这两个输入,程序必须执行以下操作:
第一。查找输入中输入的长度的所有可能子串,
[] * 第一个输入。
第二。用输入的元素形成所有可能的组合
第二个输入。
第三。打印长度 [] * 第一个输入的所有可能组合,其中
第二个输入的元素,不重复。
代码
我的代码如下,它没有给出输出的长度:
def stringPermutations(string, prefix, permutation_list):
if len(string) == 0:
permutation_list.append(prefix)
else:
for i in range(len(string)):
rem = string[0:i] + string[i + 1:]
stringPermutations(rem, prefix + string[i], permutation_list)
return sorted(list(dict.fromkeys(permutation_list)))
def main():
n = int(input("write size: "))
b = str(input("Write String: "))
permutation_list = [] * n
print(stringPermutations(b, " ", permutation_list))
if __name__ == '__main__':
main()
工作原理示例:
输入:
2
+x#
输出:
+x
+#
x+
x#
#+
#x
有人能告诉我为什么它不起作用吗?
非常感谢您的帮助!
更正后的代码:
def stringPermutations(n, string, prefix, permutation_list):
if n == 0:
permutation_list.append(prefix)
else:
for i in range(len(string)):
rem = string[0:i] + string[i + 1:]
stringPermutations(n - 1, rem, prefix + string[i], permutation_list)
return permutation_list
def main():
n = int(input("write size: "))
b = str(input("Write String: "))
permutation_list = [] * n
print(stringPermutations(n, b, "", permutation_list))
if __name__ == '__main__':
main()
输入:
2
+x#
输出:
['+x', '+#', 'x+', 'x#', '#+', '#x']
我用递归写了一段代码,遵循以下规则:
规则 2 个输入:
- 第一个输入:定义输出的长度,作为一个整数。
- 第二个输入:将用户想要的所有元素写成一个字符串,这将 成为输出的一部分。
对于这两个输入,程序必须执行以下操作:
第一。查找输入中输入的长度的所有可能子串, [] * 第一个输入。
第二。用输入的元素形成所有可能的组合 第二个输入。
第三。打印长度 [] * 第一个输入的所有可能组合,其中 第二个输入的元素,不重复。
代码 我的代码如下,它没有给出输出的长度:
def stringPermutations(string, prefix, permutation_list):
if len(string) == 0:
permutation_list.append(prefix)
else:
for i in range(len(string)):
rem = string[0:i] + string[i + 1:]
stringPermutations(rem, prefix + string[i], permutation_list)
return sorted(list(dict.fromkeys(permutation_list)))
def main():
n = int(input("write size: "))
b = str(input("Write String: "))
permutation_list = [] * n
print(stringPermutations(b, " ", permutation_list))
if __name__ == '__main__':
main()
工作原理示例:
输入:
2
+x#
输出:
+x
+#
x+
x#
#+
#x
有人能告诉我为什么它不起作用吗?
非常感谢您的帮助!
更正后的代码:
def stringPermutations(n, string, prefix, permutation_list):
if n == 0:
permutation_list.append(prefix)
else:
for i in range(len(string)):
rem = string[0:i] + string[i + 1:]
stringPermutations(n - 1, rem, prefix + string[i], permutation_list)
return permutation_list
def main():
n = int(input("write size: "))
b = str(input("Write String: "))
permutation_list = [] * n
print(stringPermutations(n, b, "", permutation_list))
if __name__ == '__main__':
main()
输入:
2
+x#
输出:
['+x', '+#', 'x+', 'x#', '#+', '#x']