0
点赞
收藏
分享

微信扫一扫

算法竞赛:当开空间太大,不允许使用memset的两个简单清空数组对策

当要求开图的数据量如下时:

int g[1005][1005];
int dp1[1005][1005], dp2[1005][1005];

但凡放一个二维数组到方法体中都会崩溃,可能是段溢出。

但凡使用一个memset(g,0,sizeof(g));都会超时的

此时总结两个应对策略:

1.使用完后马上清空:

for(int i = 0 ; i < n; i++){
for(int j = 0 ; j< m; j++){
cin >> g[i][j];
dp1[i][j] = dp2[i][j] = g[i][j];
//顺路清空:
g[i][j] = 0;
}

}


2.不清空,啥也不用做

道理:因为每一次输入的n,m是固定的,也就是给的每一张图的大小范围是固定的,每一次访问的时候都是在0--n和0--m之间,读入数据也是覆盖0---n*m的图,处理数据也是在这个范围内,所以每一次之间是不相互影响的。因此可以啥也不用做。



举报

相关推荐

0 条评论