题解 | 最小邮票数

最小邮票数

https://www.nowcoder.com/practice/83800ae3292b4256b7349ded5f178dd1?tpId=40&tqId=21345&rp=1&difficulty=&judgeStatus=&tags=/question-ranking

import sys
def dp(total,num,it):
    #dp[i][j]=min(dp[i-1][j],dp[i-1][j-weight[i]]+1)
    weight=list(map(int,next(it).strip('\n').split()))
    dp=[float('inf')]*(total+1)
    dp[0]=0
    for i in range(1,num+1):
        for j in range(total,0,-1):
            if j-weight[i-1]>-1:
                dp[j]=min(dp[j],dp[j-weight[i-1]]+1)
    ans=dp[-1]
    if ans!=float('inf'):
        print(ans)
    else:
        print(0)
if __name__ =='__main__':
    it=iter(sys.stdin)
    while 1:
        try:
            total=int(next(it).strip('\n'))
            num=int(next(it).strip('\n'))
            dp(total,num,it)
        except:
            break

每种邮票只能取一次,转化为01背包问题

全部评论

相关推荐

caicaidog:现实里没实习的还是占多数的
点赞 评论 收藏
分享
不知道怎么取名字_:现在找工作是真的太不容易了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务