背包问题变种

最少数量货物装箱问题

http://www.nowcoder.com/questionTerminal/37aa8a88a72e47f798a14d63bee61d8f

看了这么多解答,各种回溯法的确可以做,但没有写到点子上,就是一个背包问题的变种
和lintcode 上的换硬币问题是一模一样的:
https://www.lintcode.com/problem/coin-change/description

if __name__ == "__main__":
    x = int(input())
    # dp[n] 容量为 n 能够装满所需的最小个数
    a = [3, 5, 7]
    dp = [i for i in range(x+1)]
    for i in range(1, x+1):
        dp[i] = x+1
        for j in a:
            if j<=i:
                dp[i] = min(dp[i], dp[i-j] + 1)
    print(-1 if dp[x]==x+1 else dp[x])
全部评论

相关推荐

驼瑞驰_招募评论官版...:点击就挂,露头就秒
点赞 评论 收藏
分享
08-27 21:03
已编辑
成都理工大学 Java
冷花幽露:大概率是了,京东面试就是这样。我上周一面也是20多分钟,面试官问的很刁钻的问题也答上来了,面完过了几天还是没推进,泡池子,昨天一看挂了。如果一面完第2天没有收到2面邀请,基本上不用抱希望了。如果你的bg是985,面试流程也是和我们一样,20多分钟,唯一区别就是面完他们会很快收到二面邮件,而不像我们泡池子然后挂掉
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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