-1
#include<stdio.h>    
int main(){
  scanf("%d",&Testcase)
  while(Testcase--){
  int a[100000] = {0};

  /* Other statements */

  }
}

在上面的程序中,对于每个 Testcase,程序分配 100000*sizeof(int) 字节的内存。但在 codechef 中,我们可以使用的最大内存约为 10 MB。那么,有没有什么优化的方法来减少内存使用呢?

PS我尝试将其声明为全局变量。但问题是,在每个测试用例之后,旧的测试用例值会干扰新的测试用例值。

另外,我尝试在每个测试用例之后使用 for 循环重新初始化整个数组,值为 0。但这需要很长时间,超过了 3 秒的时间要求。

我要解决的问题是http://www.codechef.com/MARCH13/problems/FIRESC

编辑:允许的总内存限制实际上约为 10 MB

4

1 回答 1

4

如果您将数组声明为全局变量,它将被分配到.bss再次不是非常优化的部分中。如果您希望分配大部分内存,malloc则将是您在heap部分中分配内存的首选方式。

于 2013-03-10T15:20:14.207 回答