delphi中,数组的最大容量是多少?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中,数组的最大容量是多少?相关的知识,希望对你有一定的参考价值。

比如:myarray[1..n]of integer,“n”的最大取值是多少?

要说数组的最大容量,要了解数组的内存分配,因为堆是不限大小的,栈是受限的(2G一般),下面分为这几种情况:1、固定数组在函数体内分配是在栈中的2、固定数组在类中分配是在堆中的3、固定数组全局变量是在堆中的 参考技术A 静态数组的大小好像是4096 动态数组可以不限制大小 跟内存有关。 参考技术B 应该和栈大小有关. 参考技术C 2G

0-1 背包问题

给定一个容量为c的背包,以及一组物品,每个物品的重量及价值分别存放在一个数组中:weights[0...n],values[0...n]

求得将物品放入背包后的最大价值是多少?

 

Code:自底向上

    /**
     * 
     * @param weights 每个物品的重量
     * @param values 每个物品的价值
     * @param c 背包容量
     * @return
     */
    public int bestValue(int[] weights, int[] values, int c){
        int m = weights.length;
        
        int[][] dp = new int[m][c+1];
        for (int i = 0; i <= c; i++) {
            dp[0][i] = (i >= weights[0] ? values[0]:0);
        }

        for (int i = 1; i < m; i++) {
            for (int j = 0; j <= c; j++) {
                dp[i][j] = dp[i-1][j];
                if(j >= weights[i]){
                    dp[i][j] = Math.max(dp[i][j], dp[i-1][j-weights[i]]+values[i]);
                }
            }
        }
        return dp[m-1][c];
    }

 

Code:自顶向下

    /**
     * 
     * @param dp 存储记忆化空间
     * @param weights 每个物品的重量
     * @param values 每个物品的价值
     * @param index 放入物品的编号
     * @param c 背包容量
     * @return
     */
    private int bagValue(int[][] dp, int[] weights, int[] values, int index, int c){
        if (index < 0 || c <= 0) {
            return 0;
        }
        
        if(dp[index][c] != Integer.MIN_VALUE){
            return dp[index][c];
        }
        
        int res = bagValue(dp, weights, values, index-1, c);
        if (c >= weights[index]) {
            res = Math.max(res, bagValue(dp, weights, values, index-1, c-weights[index]) + values[index]);
        }
        dp[index][c] = res;
        return res;
    }
    
    public int bestValue1(int[] weights, int[] values, int c){
        int n = weights.length;
        int[][] dp = new int[n][c+1];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < c+1; j++) {
                dp[i][j] = Integer.MIN_VALUE;
            }
        }
        return bagValue(dp, weights, values, n-1, c);
    }

 

以上是关于delphi中,数组的最大容量是多少?的主要内容,如果未能解决你的问题,请参考以下文章

delphi 如何对动态数组求和(INT型),求最大值和最小值

用delphi编写函数求一个数组中的最大值和最小值

mbr分区和gpt分区支持的硬盘容量最大是多少

LINUX对硬件支持有上限么?最大多少内存?多大硬盘容量

AWSRDS数据盘最大多少

java中数组最多可以放置多少个元素?