MukoiAoi: 不用担心在递归方面耗时较多啊。 这是个p类问题,所以直接记忆化搜索啊(DP/拓扑排序) [code=cpp] #include<iostream> #include<algorithm> #include<set> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> using namespace std; #define FOR(i,j,k) for(int i=j;i<k;i++) #define FORD(i,j,k) for(int i=j;i>k;i--) #define LL long long int n,a,b,x; int ff[50]; LL fab(int x) { if (ff[x]) return ff[x]; else if(x%2) ff[x]=fab(x-1)+fab(x-2); else ff[x]=fab(x-1)+fab(x-2)+fab(x-3); return ff[x]; } int main() { cin>>n; FOR(i,0,n) { FOR(i,0,49) ff[i]=0; cin>>a>>b>>x; ff[1]=a; ff[2]=b; cout<<fab(x)<<endl; } } [/code]
neuq oj 1044: 谭浩强C语言(第三版)习题5.8 C++
neuq oj 1012 SZ斐波拉契数列 C++