已知某数列符合规则:f(n)=f(n-1)+f(n-2)+f(n-3),且n为自然数,f(1)=1,f(2)=1,f(3)=1,那么请求第n个数是多少。要求时间复杂度为O(n),空间复杂度为O(1).
#include<iostream>
using namespace std;
int getresult(int n) {
if (n == 1) return 1;
if (n == 2) return 1;
if (n == 3) return 1;
int f1 = 1, f2 = 1, f3 = 1,fn;
for (int i = 4; i <= n; i++) {
fn = f1 + f2 + f3;
f1 = f2;
f2 = f3;
f3 = fn;
}
return fn;
}
int main()
{
int n;
cin >> n;
cout << getresult(n) << endl;
return 0;
}
间复杂度为O(1).