赞
踩
写一个函数,输入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
- #include <iostream>
-
- using namespace std;
-
- int fib(int n)
- {
- //处理边界情况
- if (n == 0) return -1;
-
- //dp表示Dynamic programming, 即动态规划
- //根据已知条件,初始化dp数组,n等于其实就是求dp几的值,即dp[n]的值,
- //所以dp数组需要有n+1个元素,n + 1 个元素是从dp[0]____到_____dp[n]
-
- //申请空间
- int *dp = new int[n + 1]();//5个初始化为0的int
- dp[0] = 0;
- dp[1] = 1;
-
- //动态规划核心,填充dp数组
- for (int i = 2; i < n + 1; ++i) dp[i] = dp[i - 1] + dp[i - 2];
-
- int result = dp[n];
-
- //释放空间
- delete dp;
-
- //答案要求取模1e9 + 7
- return result %= 1000000007;
- }
- int main()
- {
- int n = 6;
- cout << fib(n) << endl;
- }
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。