0/1背包堆空间

时间:2014-01-07 13:39:44

标签: java memory knapsack-problem

我遇到了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];
            }

        }
    }

0 个答案:

没有答案