BackTracking增加子序列

时间:2018-06-04 15:21:44

标签: python backtracking subsequence

我无法打印此问题的解决方案。

我有一个像“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

0 个答案:

没有答案