程序员笔试题---01背包问题

引言

前几天笔试网易,题目比华为难度高,但是其实都很常规,主要还是自己练习太少,很多题目都只是粗浅的看过,并没有理解其内涵。比如网易家这道关于双核CPU任务调度的,实际上就是01背包问题,当时记得见过这类问题,但是没有想到是01背包问题,不过就算想到了,我一时也不能马上写出来。因此,现在重新总结01背包问题,避免以后遇到类似问题没有头绪。

01背包问题

对于n个重量分别为 wj 的食物,有一个容量为K的背包,问能否从n个食物中选择一部分将背包完全塞满?(或问背包最多能装走多重的食物?)。可以利用01背包问题解决的类似问题有:如何将一个数组划分为两个数组,且这两个数组的元素和相等?

问题分析

假设 p(n,K) 代表n个食物且背包重量为K的问题的解,那么我们可以将问题分为两种情况:

  • 若第n个食物是问题最优解的一部分,则 p(n
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值