栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

背包问题 python 背包九讲

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

背包问题 python 背包九讲

基础:01背包

t,m=list(map(int,input().split()))
baowu=[None]
ditu=[[0]*(t+1) for _ in range(m+1)]
for i in range(m):
    a1,a2=list(map(int, input().split()))
    baowu.append({'w':a1,'v':a2})
ditu2=[0]*(t+1)
for i in range(1,m+1):
    #for w in range(1, t + 1):
#原始
    #     if baowu[i]['w']>w:
    #         ditu[i][w]=ditu[i-1][w]
    #     else:
    #         ditu[i][w] =max(ditu[i-1][w],ditu[i-1][w-baowu[i]['w']]+baowu[i]['v'])
#一维优化
    for j in range(t,baowu[i]['v']-1,-1):
        ditu2[j]=max( ditu2[j], ditu2[j-baowu[i]['w']]+baowu[i]['v'])


# print(ditu[m][t])
print(ditu2[t])
P1060 [NOIP2006 普及组] 开心的金明

P1060 [NOIP2006 普及组] 开心的金明 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

t,m=list(map(int,input().split()))
baowu=[None]
ditu=[[0]*(t+1) for _ in range(m+1)]
for i in range(m):
    a1,a2=list(map(int, input().split()))
    baowu.append({'w':a1,'v':a2})
ditu2=[[0,0]]*(t+1)
for i in range(1,m+1):
    for j in range(t,0,-1):
        if baowu[i]['w']<=j:#是否装得下
            if ditu2[j][1]>=ditu2[j-baowu[i]['w']][1]+baowu[i]['v']*baowu[i]['w']:#比较拿和不拿的价值
                ditu2[j]=ditu2[j]
            else:
                ditu2[j]=[ditu2[j-baowu[i]['w']][0]+baowu[i]['v'],ditu2[j-baowu[i]['w']][1]+baowu[i]['v']*baowu[i]['w']]
print(ditu2[t][1])
一维优化

01背包 找路径

【Python算法系列】动态规划2-01背包问题&完全背包问题_哔哩哔哩_bilibili

完全背包

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857803.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号