我遇到了0/1背包问题。有数据,其中400行和9476897背包容量。我还有另一个大数据(10.000rows)。当我运行程序时,它在二维数组中给出错误。我怎么能改变它?顺便说一句,我改变了-Xms的所有情况,但它没有用。
错误: 线程“main”中的异常java.lang.OutOfMemoryError:Java堆空间 在Knapsack.simple_fill(Knapsack.java:108) 在Knapsack.main(Knapsack.java:99)
int[][] s = new int[n + 1][W + 1];
for (int w = 0; w <= W; w++) {
s[0][w] = 0;
}
for (int i = 0; i <= n; i++) {
s[i][0] = 0;
}
for (int i = 1; i <= n; i++) {
for (int w = 0; w <= W; w++) {
if (st[i].weight <= w) {
if (st[i].profit + s[i - 1][w - st[i].weight] > s[i - 1][w]) {
s[i][w] = st[i].profit + s[i - 1][w - st[i].weight];
} else {
s[i][w] = s[i - 1][w];
}
} else {
s[i][w] = s[i - 1][w];
}
}
}