标签:int res Explanation Number Output Fibonacci 509 Input dp
问题:
斐波那契函数。
F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), for N > 1.
给定N,求解F(N)
Example 1: Input: 2 Output: 1 Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1. Example 2: Input: 3 Output: 2 Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2. Example 3: Input: 4 Output: 3 Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3. Note: 0 ≤ N ≤ 30.
解法:
DP动态规划:
dp[i]表示F[i]的结果。
动态转移方程:
dp[i]=dp[i-1]+dp[i-2]
这里需要记录前两个数,因此设定两个变量记录前两个数
res:dp[i-1]
res_1:dp[i-2]
那么对于一个i
res=res+res_1
res由dp[i-1]变为新的dp[i]的结果,
res_1应该同时由dp[i-2]更新为dp[i-1],即本来应该=加运算之前的res的结果
但这时res改变了,
因此需要一个临时tmp去记录加运算之前但res
参考代码:
1 class Solution { 2 public: 3 int fib(int N) { 4 int res=1, res_1=0; 5 if(N==0) return 0; 6 for(int i=1; i<N; i++){ 7 int tmp=res; 8 res+=res_1; 9 res_1=tmp; 10 } 11 return res; 12 } 13 };
标签:int,res,Explanation,Number,Output,Fibonacci,509,Input,dp 来源: https://www.cnblogs.com/habibah-chang/p/12993078.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。