#include<iostream>
#include<vector>
#include<ctime>
using namespace std;
//斐波那契数列 重复计算
/*
long Fibonacci(unsigned int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
*/
// 怎么减小计算量 加一个记忆
// 记忆化搜索
/*
vector<int> memo;
long Fibonacci(unsigned int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
if(memo[n]==-1)
memo[n] = Fibonacci(n - 1) + Fibonacci(n - 2);
return memo[n];
}
*/
// 动态规划
long Fibonacci(unsigned int n)
{
vector<int> memo(n+1,-1);
memo[0] = 0;
memo[1] = 1;
for(int i =2; i <= n; i++)
memo[i] = memo[i-1] + memo[i-2];
return memo[n];
}
int main()
{
unsigned int num = 0;
cin >> num;
time_t startTime = clock();
long res = Fibonacci(num);
time_t endTime = clock();
cout << res << endl;
cout << "time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " s" << endl;
return 0;
}
动态规划
最新推荐文章于 2022-04-08 19:28:15 发布