2015-09-05 52 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