当前位置:   article > 正文

动态规划——斐波那契数列_c++fibonacci 数列的定义如下: (1) 当n = 1时,f1 = 1; (2) 当n =

c++fibonacci 数列的定义如下: (1) 当n = 1时,f1 = 1; (2) 当n = 2时,f2 = 1; (3)

写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项(即F(N))。斐波那契数列的定义如下:                            F(0)= 0            F(1) = 1        F(N)= F(N - 1) + F(N - 2),     其中 N > 1.
斐波那契数列由0和1开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模1e9+7 (1000000007),如计算初始结果为:1000000008,请返回1。
示例1:
输入:n= 2输出:1
示例2:
输入:n= 5输出:5
提示:
e<= n<= 1ae
 

  1. #include <iostream>
  2. using namespace std;
  3. int fib(int n)
  4. {
  5. //处理边界情况
  6. if (n == 0) return -1;
  7. //dp表示Dynamic programming, 即动态规划
  8. //根据已知条件,初始化dp数组,n等于其实就是求dp几的值,即dp[n]的值,
  9. //所以dp数组需要有n+1个元素,n + 1 个元素是从dp[0]____到_____dp[n]
  10. //申请空间
  11. int *dp = new int[n + 1]();//5个初始化为0的int
  12. dp[0] = 0;
  13. dp[1] = 1;
  14. //动态规划核心,填充dp数组
  15. for (int i = 2; i < n + 1; ++i) dp[i] = dp[i - 1] + dp[i - 2];
  16. int result = dp[n];
  17. //释放空间
  18. delete dp;
  19. //答案要求取模1e9 + 7
  20. return result %= 1000000007;
  21. }
  22. int main()
  23. {
  24. int n = 6;
  25. cout << fib(n) << endl;
  26. }

运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/434084
推荐阅读
相关标签
  

闽ICP备14008679号