C++:为何OJ显示Output Limit Exceed

#include
#include
using namespace std;
void sort(int a[])
{
int i,j,p,s;
for(i=0;i {
p=i;
for(j=i+1;j {
if(a[p]>a[j])
p=j;
if(p!=i)
s=a[i];
a[i]=a[p];
a[p]=s;
}
}
}
int main()
{
int apple[10];
int a,b=0,i,n=0;
for(n=0;;n++)
{
if(getchar()=='a')
break;
for(i=0;i {
cin>>apple[i];

}
cin>>a;
sort(apple);
for(i=0;;i++)
{
if(apple[i]>a+30)
break;
b++;
}
cout<<b<<endl;
}
return 0;
}

c++

3个回答

引自官方文档对于Output Limit Exceed的说明:

Your program tried to write too much information. This usually occurs if it goes into a infinite loop. Currently the output limit is 1M bytes.

OJ(Online Judge)系统对输出有限制,检查下你的代码逻辑,以确保

 cout<<b<<endl;

不被反复执行。

感觉应该将这行语句放在for (n = 0;;n++)循环体的外边,因为b是最终结果,打印输出一次就可以了。

超时了呗,看看是不是时间复杂度过大或者陷入死循环了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问