【问题标题】:What data type to use for the given description?给定描述使用什么数据类型?
【发布时间】:2019-02-23 10:36:40
【问题描述】:

问题中给出的约束如下:

约束:1

这里 T 是测试用例的数量,N 是数组中的元素个数,Ai 是数组中的第 i 个元素。

我想声明如下内容:

int ar[100000000]

满足约束但是,这是不可能的。请帮帮我。

【问题讨论】:

    标签: c++ arrays data-structures int long-integer


    【解决方案1】:

    int ar[100000000] 作为本地变量可能会爆炸您的堆栈,您可以使用全局变量或 malloc 将其放入堆中

    元素可以达到10^18需要60b,所以使用64b上的类型,可能是long而不是int

    编辑:正如 r3mus n0x 在备注中所说,您需要 int ar[10000000](长度减少 10 倍)

    如果您在 Linux/Unix 下,堆栈大小由 ulimit -s 给出

    【讨论】:

    • 第一个:对于 10^7,它有太多的零,第二个:你绝对可以声明一个该大小的全局变量,不需要分配。
    • @r3musn0x 哦,是的,10^7 只是 10000000 而不是 100000000,正如 OP 所说,我没数好。是的,我知道不是强制分配的,这就是为什么我还提出了一个全局变量
    • 哦,对不起,我看错了你的答案,你还有一个错字“var of malloc”。
    • 非常感谢。使用动态内存而不是静态内存解决了这个问题。但是我能否解释一下它是如何工作的,如果我真的要使用整数 N,比如 9546728(例如),那将是 9546728*4 字节 9546728*4/1024 = 37291.90 mB。那将超出我的记忆范围。这个问题怎么解决?
    • @sparrow 当您启动进程/线程时,您有一个默认的最大堆栈大小,如果该大小小于完整内存大小,则堆栈没有动态大小。你的操作系统是什么?
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 2011-07-05
    • 2010-09-22
    • 2011-07-24
    • 2021-05-12
    • 2010-12-22
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多