回溯法的算法框架

来源:互联网 发布:gbk转utf8 linux 编辑:程序博客网 时间:2024/05/22 00:47

回溯法

子集树

代码如下:

def constraint():    # 约束函数    return Truedef bound():    # 限界函数    return Truedef backtracing(t, lst, temp):    # 回溯法函数    size = len(lst)    if t == size:        print(temp)    else:        for i in range(0, size):            temp[t] = lst[i]            if constraint() and bound():                backtracing(t+1, lst, temp)  # 递归if __name__ == '__main__':    A = ['A', 'B', 'C']    B = ['A', 'B', 'C']    backtracing(0, A, B)

运行结果:
这里写图片描述

排列树

代码如下:

def constraint():    # 约束函数    return Truedef bound():    # 限界函数    return Truedef backtracing(t, lst):    # 回溯法函数    size = len(lst)    if t == size:        print(lst)    else:        for i in range(t, size):            (A[t], A[i]) = (A[i], A[t])  # 交换第i个            if constraint() and bound():                backtracing(t+1, lst)            (A[t], A[i]) = (A[i], A[t])if __name__ == '__main__':    A = ['A', 'B', 'C']    backtracing(0, A)

输出结果:
这里写图片描述

0 0