考虑cpp中的以下片段。这是取自动态编程教程。
它主要用于空间优化背包问题。
for(int i=1;i<=a;i++)
{
int t = a%2;
for(int j=0;j<1100000;j++) dp[t][j] = inf;
for(int j=0;j<1100000;j++){
dp[t][j] = min(dp[t][j],dp[!t][j-v[i-1]]+w[i-1]);//!t part is for skipping the current
}
}
这个片段摘自这个。我想把这个技术转换成java。但是ja
我想急切地填充对象层次结构。问题是,Hibernate在某种程度上停止了获取;它使关系字段(列表)没有填充。
层次结构是(一些代码是完整的,比如id,getter,这个部分似乎很好,希望如此):
public class User {
private Container container;
@OneToOne(fetch = FetchType.EAGER)
public Container getContainer() {
return container;
}
}
public class Container {
privat
Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Integer
at KnapSackWeights$Sack.getWeight(KnapSackWeights.java:124)
at KnapSackWeights.fillKnapSackRecursion(KnapSackWeights.java:93)
at KnapSackWeights.fillKnapSack(KnapSackWeights.java:73)
at KnapSackWe
这是一个古老而著名的背包问题:
这里我有一个约束的背包问题。
我有大小为W = 100000000和N = 100的背包,我为其编写了动态解决方案,我的算法的复杂性是O(100000000*100),这在时间和空间上都太大了,但是这里有一个条件,即无论是W ≤ 50000 or max 1≤ i ≤ n Vi ≤ 500.还是W ≤ 50000 or max 1≤ i ≤ n Vi ≤ 500.,所以如果背包大小超过50000,则项目的最大值是有限的。
所以,现在我想知道,在这种情况下,如何降低算法的时间复杂度?我认为背包问题取决于背包的大小和项目的数量,那么项的值如何改变我的算法?