2015-09-05 56 views
0

我最近完成了对基本C语言的学习。我开始解决uVa在线评判问题。我解决了3n + 1问题,在我的编译器中运行它。它做得很好。但是当我在线提交时,它说“超出时间限制”。我似乎无法放置解决方案。uVa100-'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; 
} 
+2

您应该包括问题的简要说明。 – user3386109

+0

当你“最近学习基本的C语言”时,哪本书教你缩进你的代码? –

+0

这将是SO的编辑器。 – user3386109

回答

3

你是不是打破了输入取环。 使用while (scanf ("%d %d", &a, &b) != EOF)a,bmain()。 您应该中断输入循环,否则它会等待更多输入。

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; 
} 
+0

@迈克尔Sthuvo斯廷森:如果这个答案帮助接受它。 – coderredoc