我们有一个递归公式的算法,对于渐近O((n ^ 2)* Vmax)的背包问题,其中n - 项目数,Vmax - 最大值: A [i,x] - 达到值> = x所需的总大小,同时仅使用前i个项目。 A [i,x] = min {A [i-1,x],A [i-1] [xv [i]] + w [i]},其中A [i-1] [xv [i]]如果v [i]> = x,则= 0;基本情况:如果x == 0且加上inf,则[0,x] = 0。否则;
对于+ inf。在java中我使用Integer.Max_VALUE。算法运行时有一个调用:A [0,1],A [0,2] ......矩阵填充负数(int溢出) 我如何能够提出无穷大和无穷大以及数字?
答案 0 :(得分:0)
如果你没有无限存储无穷大,只是为了比较而使用它,你可以使用双无穷大,它大于int和long max value。
Double.POSITIVE_INFINITY
如果您正在存储数字,并且仍然溢出,则应将数字存储在数组中的长度,然后将其与整数最大值进行比较,这样您就会知道数字大于最大值而没有溢出。其缺点是执行速度较慢,内存消耗较大。
答案 1 :(得分:0)
如果您知道输入的最大值,请尝试使用略大于该值的值。这应该可以解决问题。