我最近学习了基本的C语言。我开始解决uVa在线判断问题。我解决了3n + 1问题,在我的编译器中运行它。它做得非常好。但是,当我在网上提交时,它说超过时间限制。"我似乎无法提出解决方案。
以下是代码:
#include<stdio.h>
int execute(int x, int y)
{
int i, n, k, maxCycle=0;
for(i=x; i<=y; ++i)
{
n=1;
k=i;
while(k!=1)
{
if(k%2==1)
k=3*k+1;
else
k=k/2;
n++;
}
if(n>=maxCycle)
maxCycle=n;
}
return maxCycle;
}
int main()
{
while(1)
{
int a, b, max;
scanf("%d %d", &a, &b);
max=execute(a, b);
printf("%d %d %d\n", a, b, max);
}
return 0;
}
答案 0 :(得分:3)
您没有打破输入循环。
在while ( scanf ("%d %d", &a, &b) != EOF )
中取a,b
时使用main()
。
你应该打破输入循环,否则等待更多输入。
int main()
{
int a,b;
while(scanf ("%d %d", &a, &b) != EOF )
{
int max;
max=execute(a, b);
printf("%d %d %d\n", a, b, max);
}
return 0;
}