算法竞赛里的创建(堆与栈)数组
最近对算法着迷,准备先打打算法小比赛,有时我会分享、加深某些知识印象。
以DevCpp为例
算法竞赛里经常会使用到数组,比如动态规划类的题目,动辄需要几万几十万长度的数组作为单元格存放数据。如果我只是在主函数里 int arr[100000];那么该数组会在"栈"上创建存放,而"栈"的空间大小不足以放这么大的数组。以DEVCPP为例,我的测试是最多放5万-6万的int数组,"栈"就爆炸了,更别提递归。
这时候我们就需要把数组创建在堆
堆,比栈大的多得多,完全可以容纳超长数组。堆和栈的区别不多说,创建堆数组有2种方法:
1.使用new申请创建。
new
。
inw* arr = new int[10000000];
2.借助static定义全局数组
//#include<iostream>
//using namespace std;
static int way[10000001][10000001];
static int v[10000001];
static int arr[10000001];
最后是成果展示 3个千万长度的数组可以运行程序
最后,如果读者发现上文有误,请告知我,万谢,我还需要继续学习。