算法:挑选几个权重不同的项目,以使它们的总和保持尽可能接近某个值

问题描述 投票:0回答:1

我有3个文件夹,每个文件夹包含不同数量的文件。

Folder_#1:最长持续时间为170毫秒的音频文件。

Folder_#2:最小持续时间为170毫秒,最大持续时间为460毫秒的音频文件。

Folder_#3:最短持续时间为460毫秒的音频文件。

现在,我需要从三个文件中选择一个文件,以使它们的持续时间之和达到720毫秒,或者尽可能接近。

要求使用3个文件夹中的所有音频文件。

对此有什么好的算法?

algorithm math distribution
1个回答
0
投票

尝试蛮力,计算机速度很快:(这只是伪代码)

best = float("inf")
res = None
for f1 in Folder_1:
    for f2 in Folder_2:
        for f3 in Folder_3:
            dist = abs(f1.size + f2.size + f3.size - 720)
            if dist < best:
                best = dist
                res = (f1, f2, f3)
return res

如果并且仅当不够快时,请尝试变得聪明。

© www.soinside.com 2019 - 2024. All rights reserved.