zoukankan      html  css  js  c++  java
  • C++ optimized fib function via map

     1 #include <iostream>
     2 #include <map>
     3 
     4 using namespace std;
     5 
     6 map<int, unsigned long long> fibMap;
     7 unsigned long long fibDemo4(int i);
     8 
     9 int main()
    10 {
    11     for (int i = 1; i < 50; i++)
    12     {
    13         cout << "i= " << i << ",fib result= " << fibDemo4(i)<< endl;
    14     }
    15     getchar();
    16 }
    17 
    18 
    19 unsigned long long fibDemo4(int i)
    20 {
    21     map<int, unsigned long long>::iterator itr;
    22     itr = fibMap.find(i);
    23     if (itr!=fibMap.end())
    24     {
    25         return itr->second;
    26     }
    27 
    28     if (i == 1 || i==2)
    29     {
    30         if (i == 1)
    31         {
    32             fibMap.insert(pair<int, unsigned long long>(1, 1));
    33         }
    34         else
    35         {
    36             fibMap.insert(pair<int, unsigned long long>(2, 1));
    37         } 
    38         return 1;
    39     } 
    40     else 
    41     {
    42         unsigned long long result = fibDemo4(i - 2) + fibDemo4(i - 1);
    43         fibMap.insert(pair<int, unsigned long long>(i, result));
    44         return result;
    45     } 
    46 }

  • 相关阅读:
    在Eclipse中使用Checkstyle 检查Java代码规范
    文件缓存法的具体实现
    hdu 4454 Stealing a Cake
    uva 11922
    uva 11020
    uva 12206
    uva 11107
    uva 11796
    uva 11178
    uva 11437
  • 原文地址:https://www.cnblogs.com/Fred1987/p/14812234.html
Copyright © 2011-2022 走看看