作家
登录

Python算法实战系列:栈

作者: 来源: 2017-05-26 14:04:49 阅读 我要评论

  •  
  • print(result) 
  •  
  • # 14  
  • 背包问题

    标题

    有一个背包能装10kg的物品,如今有6件物品分别为:

    解决代码

    1. #!/use/bin/env python 
    2.  
    3. # _*_ coding:utf-8 _*_ 
    4.  
    5. def knapsack(t, w): 
    6.  
    7.     ""
    8.  
    9.     :param t: 背包总容量 
    10.  
    11.     :param w: 物品重量列表 
    12.  
    13.     :return
    14.  
    15.     ""
    16.  
    17.     n = len(w)  # 可选的物品数量 
    18.  
    19.     stack = []  # 创建一个栈 
    20.  
    21.     k = 0  # 当前所选择的物品游标 
    22.  
    23.     while stack or k < n:  # 栈不为空或者k<n 
    24.  
    25.         while t > 0 and k < n:  # 还有残剩空间并且有物品可装 
    26.  
    27.             if t >= w[k]:  # 残剩空间大年夜于等于当前物品重量 
    28.  
    29.                 stack.append(k)  # 把物品设备背包 
    30.  
    31.                 t -= w[k]  # 背包空间削减 
    32.  
    33.             k += 1  # 持续向后找 
    34.  
    35.         if t == 0:  # 找到懂得 
    36.  
    37.             print(stack) 
    38.  
    39.         # 回退过程 
    40.  
    41.         k = stack.pop()  # 把最后一个物品拿出来 
    42.  
    43.         t += w[k]  # 背包总容量加上w[k] 
    44.  
    45.         k += 1  # 装入下一?物品 
    46.  
    47. knapsack(10, [1, 8, 4, 3, 5, 2]) 
    48.  
    49. ""
    50.  
    51. [0, 2, 3, 5] 
    52.  
    53. [0, 2, 4] 
    54.  
    55. [1, 5] 
    56.  
    57. [3, 4, 5] 
    58.  
    59. "" 

        推荐阅读

        “互联网+”让出租车更智慧

      走进淮北市运输治理处信息批示中间,一幅由6块液晶显示屏构成的监控屏幕映入眼帘,经由过程屏幕画面可以清楚地看到全市在运行出租车的及时地位和车内人员的音视频信息。批示中间以每周7日>>>详细阅读


      本文标题:Python算法实战系列:栈

      地址:http://www.17bianji.com/lsqh/35452.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)