Java 在背包任务中解释无限
对于具有渐近O((n^2)*Vmax)的背包问题,我们有一个带递归公式的算法,其中n-项目计数,Vmax-最大值: 仅使用前i项时,实现值>=x所需的[i,x]-最小总大小。 A[i,x]=min{A[i-1,x],A[i-1][x-v[i]]+w[i]},其中如果v[i]>=x,A[i-1][x-v[i]=0;基本情况:如果x==0,则A[0,x]=0,否则加上inf 在java中,对于+inf,我使用Integer.Max\u值。当算法运行时,有一个调用:a[0,1],a[0,2]。。。和矩阵填充负数(整数溢出)Java 在背包任务中解释无限,java,algorithm,knapsack-problem,Java,Algorithm,Knapsack Problem,对于具有渐近O((n^2)*Vmax)的背包问题,我们有一个带递归公式的算法,其中n-项目计数,Vmax-最大值: 仅使用前i项时,实现值>=x所需的[i,x]-最小总大小。 A[i,x]=min{A[i-1,x],A[i-1][x-v[i]]+w[i]},其中如果v[i]>=x,A[i-1][x-v[i]=0;基本情况:如果x==0,则A[0,x]=0,否则加上inf 在java中,对于+inf,我使用Integer.Max\u值。当算法运行时,有一个调用:a[0,1],a[0,2]。。。和矩
如何解释无穷大和无穷加数字?如果你不在任何地方存储无穷大,只是为了比较,你可以使用双无穷大,它大于int和long max值
Double.POSITIVE_INFINITY
如果正在存储数字,但仍然溢出,则应在数组中存储尽可能长的数字,然后与整数最大值进行比较,这样您就可以知道数字大于最大值而不会溢出。缺点是执行速度较慢,内存消耗较大。如果您知道输入的最大值,请尝试使用略大于该值的值。这应该能奏效