我无法打印此问题的解决方案。
我有一个像“0,1,0,1”的字符串,我必须使用回溯技术打印所有增加的子序列,所以我应该打印:
0,1,_,_
0,1,_,1
0,_,0,1
0,_,_1
_,_,0,1
我对“基本情况”有一个问题,因为当i == 0和j == 0时,当我在第一个位置有“0”时我有2个基本情况,第一个我应该在我的插入零解决方案(我实现了这一点),第二个我应该只调用该函数。(我失败了,因为我无法调用) “其他”点不起作用。
请建议。
代码
def es(i,n,list,sol):
if i == n:
print(sol)
else:
for j in range(len(list)):
if i == 0 and list[j] == 0:
sol[i] = 0
es(i+1,n,list,sol)
if i == 0 and list[j] == 1:
es(i+1,n,list,sol)
else:
if sol[i-1] == 0 and sol[i-1] <= list[j]:
sol[i] = list[j]
es(i+1,n,list,sol)
if sol[i-1] == 1 and sol[i-1] <= list[j]:
sol[i] = list[j]
es(i+1,n,list,sol)
else:
continue