"""
递归与回溯
1、递归就是自己调用自己,但是他会不会有不适用的情况呢?迷宫问题一般用传统的递归很难解决
2、就有科学家来研究这个问题,dfs算法(深度优先搜索算法)
"""
"""
总结:
1、为什么要引入回溯:解决迷宫问题
2、特点:
2.1、要标记走过的路
2.2、到终点要回溯
3、其他与递归无异(递推式、递推出口)
"""
# 全排列问题
str1 = "abc"
visited = []
def f(n):
# 1、先写递归的出口
if n == 3:
print(visited)
else:
for i in str1:
if i not in visited: # 这个visited就是锁
visited.append(i)
f(n + 1)
visited.remove(i)
f(0)
# 组合的输出
vis = []
def f(n):
if n == 3: # 出口
if sorted(vis) == vis:
print(vis)
return
for i in range(1, 6):
# 加锁
if i not in vis:
vis.append(i)
f(n + 1)
vis.remove(i)
f(0)
"""
区分什么时候用回溯
"""
# 因式分解
list1 = [0 for i in range(1, 50)]
print(len(list1))
def f(m1, end, count):
# 出口
if count > 7:
return
elif count == 7:
print(list1[:end])
return
for i in range(m1, 7):
list1[end] = i
f(i, end + 1, count + i)
f(1, 0, 0)
递归与回溯算法
最新推荐文章于 2024-07-19 22:18:21 发布