这道题的正解是 折半搜索(Meet in the Middle),但是我们用朴素解法 DFS 枚举每个需求选或不选也能在考试时拿到一定的分数。
题意:有 n 个需求,第 i 个需要 ti 人天,预算为 T。每个需求要么全做要么不做,求不超过 T 的最大工作量之和。
朴素做法:对每个需求做或不做,DFS 枚举全部 2n 种方案,在不超过 T 的方案里取最大和。
n 较小时可过;题面 n≤40,直接 240 会超时,需要折半。
某团队来了一个大项目,该项目已知有n个需求,每个需求工作量分别需要t1、t2、t3.......tn人天,由于该项目需求过多,负责人小明决定先给出T人天预算完成部分需求。对于单个需求,每个任务要么不做,要么全部完成,必须耗时ti人天完成,现在小明想知道T人天的预算最多能做多少人天的需求。
输入共两行
首行是2个整数,以空格隔开,分别是n和T,n代表需求总数,T代表工作量评估不超过T人天
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册