具有双重数据类型的背包

Knapsack with double data types

本文关键字:背包 数据类型      更新时间:2023-10-16

到目前为止,我在互联网上看到的所有背包问题,都有给定成本变量容量的形式(成本,价值)。所有的问题似乎都只将成本作为整数,这使得为Value和Keep数组制作2D数组非常方便。但是,如果成本变量不是整数,而是双数据类型,该怎么办?无法基于双数据类型创建Value和Keep数组。我该如何处理这种情况?

例如:

预算:3458美元

item_name(笔记本电脑)成本(1177.44)价值(131)

item_name(桌面)成本(1054.44)值(35)

item_name(GPU)成本(1252.66)值(105)

item_name(CPU)成本(946.021)值(136)

您可以扫描输入以查找最小指数(使用frexp()),并添加尾数精度(53位?)以找到一个缩放因子,该因子将把所有数字转换为完全成比例的整数。

不过,您需要一个bigint库来处理生成的整数。

切换到一个动态程序,该程序为每个值找到成本最低的解决方案,用2D数组表示Cost和Keep,而不是value和Keep。(程序之间的差异很小。)