我需要编写一个应用程序来获取文件列表(有的大,有的小),并尽可能高效地将它们放入 DVD(或 CD,或其他)。这个应用程序的重点是在移动到第二个磁盘之前用尽第一个磁盘,在移动到第三个磁盘之前尽可能多地填充第二个磁盘,等等。
(注意:应用程序不必实际刻录到 DVD,它只需要找出最适合的位置即可)。
我最初认为我有一个很好的游戏计划,方法是生成文件的排列,然后检查每个组合以查看最适合的组合。 (我的帮助请求可以在 HERE 找到)
但是文件越多,花费的时间就越长……呈指数增长。因此,我想就如何最好地实现这一点征求您的一些意见。
有什么想法吗?而且,一如既往,C# 代码总是受到赞赏。
最佳答案
您面临的问题与 knapsack problem 有关.链接的维基百科页面包含更多信息,包括建议的解决方法。
关于C#:尽可能高效地将大量文件放入 DVD 的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825387/