如何做到空间变少?#创作计划#
2025-08-04 13:58:04
发布于:浙江
相信很多人都有这样的烦恼:空间总是很大,打败不了其他用户。如果你也有这种烦恼,不妨来试一试我这个方法:
题目:找到列表里的最小值最大值
正常写法
#include<bits/stdc++.h>
int a[101]; // 假设n最大为1e2
int n,maxn = -1,minn = 1e9;
int main(){
std :: cin >> n;
for(int i = 0;i < n;i++){
std :: cin >> a[i];
if(maxn < a[i])maxn = a[i];
if(minn > a[i]) minn = a[i];
}std :: cout << maxn << endl << minn;
return 0;
}
上面这种写法运用了打擂台的方式寻找最大最小值,而空间大概在3.00~3.80mb左右,这种一般打败的用户大概在80%~10%,所以非常的不舒服,那如何优化空间呢? 其实很多时候你以为空间大多在数组上,但其实你的头文件才是最大的,所以用以下写法就可以达到超越90%~60%的人
空间优化写法:
#include<cstdio>
int a[101];
int n,maxn = -1,minn = 1e9;
int main(){
scanf("%d",&n);
for(int i = 0;i < n;i++){
scanf("%d",&n);
if(maxn < a[i])maxn = a[i];
if(minn > a[i])minn = a[i];
}printf("%d\n%d",maxn,minn);
return 0;
}
如果像如上这样写的话,空间会比使用万能头的空间减少接近一半,而因为printf和scanf的时间是快于cin和cout的,所以会达到空间与时间的双高。当然,此方法也有弊端,一就是代码的可读性将会降低少许。二是string是不能通过printf输出的,也不能通过scanf输入。
以下是我测试的输入输出头文件的大小
1.iostream + printf("1")最小3.34mb
2.cstdio + printf("1")最小1.35mb
3.bits/stdc++.h + printf("1")3.36mb
所以多选择使用cstdio
全部评论 1
3天前 来自 北京
0
有帮助,赞一个