算法竞赛:当开空间太大,不允许使用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的图,处理数据也是在这个范围内,所以每一次之间是不相互影响的。因此可以啥也不用做。
文章来源: https://blog.51cto.com/u_15389271/5396857
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报