有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 0/1背包堆空间

我有一个0/1背包问题。有400行和9476897背包容量的数据。我还有另一个大数据(10.000行)。当我运行这个程序时,它在二维数组中给出了一个错误。我怎样才能改变它?顺便说一句,我在所有情况下都更改了-Xms,但它不起作用

错误: 线程“main”java中出现异常。lang.OutOfMemoryError:Java堆空间 在背包上。简单填充(背包,java:108) 在背包上。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) 个答案