• uva 110[The 3n + 1 problem]


    看到《挑战编程》这本书,然后就试试做做上面的题目,之前已经在hdu上面过了这一题了,但是现在看到这一题,我是再想怎么可以运行更少的时间……

    这里用了一个数组,记录已经计算出的值,结果时间缩短了10倍

    但是我注释的地方不知道为什么会用问题,如果加上那一段就会RE~_~

    代码如下:
     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 int vis[1000000+10];
     6 int get_value(int x)
     7 {
     8     if(vis[x] != 0) return vis[x];
     9 
    10     int count = 1;
    11     int tmp = x;
    12     while(x > 1)
    13     {
    14         int temp = x;
    15         if(x % 2 == 0)
    16             x = x / 2;
    17         else
    18             x = 3 * x + 1;
    19         /*if(vis[x] != 0 ) 
    20         {
    21             vis[temp] = vis[x] + 1;
    22             count += vis[x];
    23             vis[tmp] = count;
    24             return count;
    25         }*/
    26         count ++;
    27     }
    28     vis[tmp] = count;
    29     return count;
    30 }
    31 
    32 int main()
    33 {
    34     memset(vis,0,sizeof(vis));
    35     vis[1] = 1;
    36 
    37     int n,m;
    38     while(cin >> n >> m)
    39     {
    40         int a = n ,b = m;
    41         if(n > m)
    42         {
    43             a = m;
    44             b = n;
    45         }
    46 
    47         int maxvalue = 0;
    48         for(int i = a;i <= b;i ++)
    49         {
    50             int num = get_value(i);
    51             if(num > maxvalue)
    52                 maxvalue = num;
    53         }
    54 
    55         cout << n << " " << m << " " <<maxvalue << endl;
    56     }
    57 
    58     return 0;
    59 }
  • 相关阅读:
    KBEngine:记录
    h5游戏研讨
    Django部署方法
    JQuery Advanced
    Web从入门到放弃<7>
    Web从入门到放弃<6>
    Web从入门到放弃<5>
    Web从入门到放弃<4>
    Web从入门到放弃<3>
    Web从入门到放弃<2>
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2628600.html
Copyright © 2020-2023  润新知