最近,我在解决背包的变化问题时遇到了这个错误。谁能建议一些方法来摆脱它?
const int n=105, w= 1000000005;
int val[n], ans[n][w];
int weight[n];
错误:数组'ans'的大小'4000000020'超过最大对象大小'2147483647'.
您所做的是创建Tera字节的内存分配。通常你在堆中做这些类型的分配(使用像std::vector<int> val(n);
和std::vector<std::vector<int>> ans(n, std::vector<int>(w));
这样的向量)。但是,您确定需要那么大的内存吗?毕竟你谈论了多达105,000,000,525个整数。
谁能建议一些方法来摆脱它?
- 选项1:使数组更小,这样它就不会超过限制。
- 选项2:目标系统具有更高的限制。
- 选项3:动态分配数组。一个简单的方法就是使用
std::vector
。