C-到底哪错了 一直time limit exceed 请帮我看一下这个C程序(学校自家网站上的题)

发布于 2016-10-12 05:33:26 字数 795 浏览 1181 评论 2

#include<stdio.h>
void main()
{
int a[100000],n,i,f,m;
scanf("%d",&n);
while(n!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
f=1;
m=1;
for(i=0;i<n-1;i++)
{
if(a[i]<=a[i+1])
m++;
else
{
if(m>f)
f=m;
m=1;
}
}
printf("%d",m>f?m:f);
scanf("%d",&n);
}
}
要是换成while(scanf("%d",&n)!=EOF)便会提示wrong answer

请输入图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-08-21 19:58:09

 while(scanf("%d",&n)!=EOF)

这段代码意思是直到终止输入才退出此循环,在linux下是按Ctrl-D。但是很明显系统检验你这个程序时不会这样做,相反地,是正常地输入一个值给n。所以这个循环是不可能跳出的,程序陷入了死循环。

瑾兮 2017-07-03 20:17:07

scanf()函数一般来说返回成功赋值的数据项数,所以

while(scanf("%d",&n)!=EOF)

scanf("%d",&n);
while(n!=EOF)

是有本质区别的。
但是我觉得题主的程序这样写才靠谱

 #include<stdio.h>
void main()
{
int a[100000],n,i,f=1,m=1;
scanf("%d",&n);
for(i=0; i<n; i++) scanf("%d",&a[i]);
for(i=1; i<n; i++){
if(a[i]<a[i-1]){
m = m > f ? m : f;
f = 1;
}else{
f++;
}
}
printf("%dn",m);
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文