为是么提交就显示mle啊
#include<iostream>#include<vector>
#include<algorithm>
using namespace std;
int main ()
{
int b;
scanf("%d",&b);
vector<int>arr;
int cnt=0;//记录循环次数
int element;
char a;
int capacity=0;//数组容量
while(cnt<b)
{
cin>>element;
arr.push_back(element);
cin.get(a);
if(a=='\n')
cnt++;
capacity++;
}
sort(arr.begin(),arr.end());
int m,n;
for(int index=0;index<capacity-1;index++)
{
if(arr!=arr-1&&arr!=arr)
{
m= arr+1;
}
if(arr==arr)
{
n=arr;
}
}
printf("%d %d",m,n);
return 0;
}
luogu.com.cn/problem/P8598 MLE 是指内存限制超出(Memory Limit Exceeded)。这种错误提示表示你的程序可能占用了过多的内存资源。您在这里可能是因为动态数组 vector 的使用方式不当,导致内存超出限制。
出现 MLE 的可能原因:
[*]无限循环导致 vector 无限增长。
[*]未对输入进行有效的约束处理。
[*]没有针对输入进行有效的大小限定。
建议:
[*]确保您的程序可以正确地退出循环。
[*]考虑限制输入的大小或设置合理的边界条件。
[*]仔细检查 cnt 和 capacity 的使用逻辑。
请尝试这样的小修改来验证是否有因为循环条件错误,而使输入和记录超出预期的可能性。完整的代码部分似乎有遗漏,请确保所有逻辑闭合及相关部分代码完整性。希望能帮助到您!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-3-8 18:21
MLE 是指内存限制超出(Memory Limit Exceeded)。这种错误提示表示你的程序可能占用了过多的内存资源。您 ...
这个问题已经解决,是我以为标准输入结尾是\n,但事实不是,我以\n来判断循环是错误的
页:
[1]