测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A38937. 编程实现现有一个容器,其容量为v(0<v<1001,正整数),同时有n个物品(0<n<=30),每个物品体积大小不同(正整数)。在n个物品中,任取若干个装入容器内,使容器的剩余空间为最小。输入描述输入容器大小V(0<V<1001,正整数)输入物品数量n(0<n<=30)输入n个物品的不同大小(正整数)输出描述剩余最小空间值样例输入100450204519说明:“100”输入的是容器大小V;“4”…

填空题 困难

题目描述

编程实现

现有一个容器,其容量为v(0<v<1001,正整数),同时有n个物品(0<n<=30),每个物品体积大小不同(正整数)。

在n个物品中,任取若干个装入容器内,使容器的剩余空间为最小。

输入描述

输入容器大小V(0<V<1001,正整数)输入物品数量n(0<n<=30)输入n个物品的不同大小(正整数)

输出描述

剩余最小空间值

样例输入

100

4

50

20

45

19

说明:“100”输入的是容器大小V;“4”输入的是物品数量n;“50"“20"“45,“19”输入的是4个物品体积。

样例输出

5

说明:“5”是容器大小减掉4个物体不同组合后与容器大小最为接近的一组值。(物品组合个数不限制,只找最接近容器大小的值)

参考答案

def fill(lst,room): if not lst: #物品取完 return room if not room: #没有空间 return 0 result = fill(lst[1:],room) #空间不够放 if room>=lst[0]: #空间够放 take=fill(lst[1:],room-lst[0]) result=min(take,result) return result v=int(input()) n=int(input()) lst=[] for i in range(n): lst.append(int(input())) print(fill(lst,v))
上一题 下一题