回溯
回溯是递归的一种形式。但它涉及选择任何可能性的唯一选择。我们首先选择一个选项并从中退出,如果我们达到了一个状态,那么我们可以得出结论:这个特定的选项不能提供所需的解决方案。我们通过遍历每个可用选项来重复这些步骤,直到获得所需的解决方案。
案例
以下例子是查找给定字母集合的所有可能排列顺序的示例。当我们选择一对时,我们应用回溯来验证是否已经创建了该确切的一对。如果尚未创建,则将该对添加到答案列表中,否则将被忽略。
[Python]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
|
def
permute(a, s):
if
a
=
=
1
:
return
s
else
:
return
[ y
+
x
for
y
in
permute(
1
, s)
for
x
in
permute(a
-
1
, s)
]
print
(permute(
1
, [
"a"
,
"b"
,
"c"
]))
print
(permute(
2
, [
"a"
,
"b"
,
"c"
]))
|
上述代码输出结果为:
[Python]
纯文本查看 复制代码
1
2
|
[
'a'
,
'b'
,
'c'
]
[
'aa'
,
'ab'
,
'ac'
,
'ba'
,
'bb'
,
'bc'
,
'ca'
,
'cb'
,
'cc'
]
|
更多技术资讯可关注:gzitcast