【算法分析】
本题 1≤N≤20,所以可以用基础的动态规划算法来求解。若 N 很大,就需要结合高精度来求解了。
【算法代码】
#include <bits/stdc++.h>
using namespace std;
const int maxn=30;
int f[maxn];
int main() {
int n;
cin>>n;
f[0]=1,f[1]=1,f[2]=2;
for(int i=3; i<=n; i++) {
f[i]=f[i-1]+f[i-2]+f[i-3];
}
cout<<f[n]<<endl;
return 0;
}
/*
in:5
out:13
*/