uVa100-' 3n + 1' 〜超出时间限制

时间:2015-09-05 18:22:43

标签: c

我最近学习了基本的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;
}

1 个答案:

答案 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;
}