openjudge 菲波那契数列 2753

xiaoxiao2021-02-28  20

2018-3-15

斐波那契数列 这个对我们来说应该并不陌生,f(n)=f(n-1)+f(n-2),初始化f(1)=1,f(2)=1,当n比较大的时候,我们会发现有些f(m)会被我们计算了多次,那么我们可以先将它们存到数组里,如果我们需要用的话直接去数组里面取就可以了。

#include<iostream> #include<cstring> using namespace std; const int N = 20; int fib[N+1]; int dfs(int p){ if (fib[p]) return fib[p]; fib[p]=dfs(p-1)+dfs(p-2); return fib[p]; } int main(){ memset(fib,0,sizeof(fib)); fib[1]=1;fib[2]=1; int t,n; cin>>t; while(t--){ cin>>n; if (fib[n]) cout<<fib[n]<<endl; else cout<<dfs(n)<<endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2628276.html

最新回复(0)