Advertisement

深度优先搜索-组合问题

阅读量:
复制代码
    def com(arr, n, k, vis, cur):   # cur表示剩下可选的元素范围为cur~n
    if len(vis) == k:
        print(vis)
        return      # 剪枝1
    if n-cur + len(vis) < k:    # 剪枝2
        return
    for i in range(cur, n): # 关键点1,从剩下可选范围内增加元素
        vis.append(arr[i])
        com(arr, n, k, vis, i+1)    # 关键点2:为了保证顺序,当前选中元素左边的元素不再选了
        vis.remove(arr[i])
    
    
    if __name__ == '__main__':
    arr = ['A', 'B', 'C', 'D', 'E']
    n = len(arr)
    k = 3
    vis = []
    cur = 0
    com(arr, n, k, vis, cur)
    
    
      
      
      
      
      
      
      
      
      
      
      

全部评论 (0)

还没有任何评论哟~