对于我迄今为止在互联网上看到的所有背包问题,所有这些问题都具有给定成本变量容量的形式(成本,价值)。所有问题似乎都只是一个整数,这使得为Value和Keep数组制作一个2D数组非常方便。但是,如果成本变量不是整数而是双数据类型呢?根据双数据类型,无法创建Value和Keep数组。我该如何处理这种情况?
前:
预算:3458美元
item_name(laptop)cost(1177.44)value(131)
item_name(桌面)费用(1054.44)价值(35)
item_name(GPU)成本(1252.66)值(105)
item_name(CPU)成本(946.021)值(136)
答案 0 :(得分:1)
您可以扫描输入中的最小指数(使用frexp()
),并添加尾数精度(53位?)以找到一个缩放因子,将所有数字转换为完全成比例的整数。
但是,您需要一个bigint库来处理生成的整数。
答案 1 :(得分:1)
切换到动态程序,为每个值找到成本最低的解决方案,使用2D数组代替Cost和Keep而不是Value和Keep。 (程序之间的差异很小。)