algorithm - 如何以最节省空间的方式选择 DVD 的内容?
问题描述
我有这些目录,A、B、C.. 我需要在 DVD 上刻录各种大小。问题是我不想浪费任何空间。我想将这些目录尽可能紧密地打包在 DVD 中,而不考虑顺序。当然,目录的内容是不可干预的。
例如:DVD 是 4GB。A 为 1GB,B 为 2GB,C 为 3GB,D 为 2GB。
按照订单,我需要 3 张 DVD{1: [A,B], 2: [C], 3: [D]}
但最有效的方法是 2 张 DVD{1: [B, D], 2: [A,C]}
很难从哪里开始。是否已经有一个算法?
我正在研究 Python 3,但欢迎使用通用代码。
解决方案
这是一个 NP Hard 的装箱问题,因此找到一个准确的答案将花费大量时间。您可以使用简单的背包算法,但它可能并不总是正确的。这是一个链接,它更详细地解释了这一点。
https://www.geeksforgeeks.org/bin-packing-problem-minimize-number-of-used-bins/
推荐阅读
- python - How to get the message_id of received messages with Telethon?
- android - How to run Conv3D Model in Android?
- python - 在空格前附加键的值
- mapping - Lucene.NET 2-Way Synonyms
- spring-boot - unable to figure out what is going on to the spring boot application on deployment on google app engine?
- amazon-web-services - 我是否需要在 ECS 所在的同一 VPC 中创建 SQS?
- python - How to combine only first and last column from each Excel sheet into new excel using panas in python?
- javascript - i++ 循环没有任何问题,i+2 无限循环并崩溃
- python - 如何使用 Selenium 和 Python 从定位的元素中抓取文本
- opencv - OpenCV ndarray image save fails after serialization