练习题2:python利用软件编程FFD算法完成下题: 设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。最少使用几个箱子?
时间: 2023-12-10 21:41:44 浏览: 26
以下是使用 FFD 算法来解决这个问题的 Python 代码:
```python
def ffd(items, bin_capacity):
# 对物品按体积从大到小排序
items.sort(reverse=True)
# 初始化箱子列表,每个箱子的剩余容量为 bin_capacity
bins = [bin_capacity]
# 遍历所有物品
for item in items:
# 对于每个物品,遍历所有箱子,找到第一个能放下该物品的箱子
for i, bin in enumerate(bins):
if bin >= item:
# 如果找到了能放下该物品的箱子,则将该物品放入该箱子中,并更新该箱子的剩余容量
bins[i] -= item
break
else:
# 如果没有找到能放下该物品的箱子,则需要新开一个箱子,并将该物品放入其中
bins.append(bin_capacity - item)
# 返回使用的箱子数
return len(bins)
# 测试代码
items = [60, 45, 35, 20, 20, 20]
bin_capacity = 100
num_bins = ffd(items, bin_capacity)
print("最少使用 {} 个箱子。".format(num_bins))
```
输出结果为:
```
最少使用 3 个箱子。
```
因此,最少使用 3 个箱子。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)