返回

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

发布时间:2022-10-21 02:05:06 337
# 数据

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

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)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线