代码之家  ›  专栏  ›  技术社区  ›  Quân Đoàn

为什么我们必须定义变量DP=[0 ] *(n+1),只是将其变量设为0(在动态规划中)

  •  1
  • Quân Đoàn  · 技术社区  · 6 年前

    我有一些关于某人定义的问题: dp = [0] * (n + 1) 只需将变量设置为0,它应该做什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   willeM_ Van Onsem    6 年前

    在python中,可以将list和tuple与整数相乘 n . 然后它将生成一个长度为 L×N 具有 L 给定列表/元组的长度。它将重复该集合中的元素,例如:

    >>> [1,4,2,5]*3
    [1, 4, 2, 5, 1, 4, 2, 5, 1, 4, 2, 5]
    >>> (1,4,2,5)*3
    (1, 4, 2, 5, 1, 4, 2, 5, 1, 4, 2, 5)
    

    由于这里给定的列表是单例的,因此可以构造一个长度为 n+1 每个元素的位置 0 ,像:

    >>> [0] * (5 + 1)
    [0, 0, 0, 0, 0, 0]
    

    当将列表/元组与整数相乘时, 参考文献 所有的物品都处理好了。你这样做 对这些值进行“深度复制”。自从 int s是不变的,这无关紧要。但是,如果元素是列表,则您没有复制该列表,而是列出了多次引用同一列表的列表。