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

  /* Other statements */

  }
}

上記のプログラムでは、テストケースごとに 100000*sizeof(int) バイトのメモリが割り当てられます。しかし、codechef で使用できる最大メモリは約 10 MB です。では、メモリ使用量を削減する最適な方法はありますか?

PS私はそれをグローバル変数として宣言しようとしました。しかし、それに関する問題は、すべてのテスト ケースの後、古い Testcase 値が新しい Testcase 値と干渉することです。

また、すべてのテストケースの後、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 に答える