2997. 泰波拿契数列的前37项

帕秋莉_诺蕾姬

多打了个空格一直报错???

Canis

打表就完事

Qjchen

这一题是只能用循环了么?
用记忆递归,开一个数组记录已经算出来的值。

Qjchen

这一题是只能用循环了么?
用记忆递归,开一个数组已经算出来的值。

Li Dao

这题目就是纯模拟了,没任何坑。可以先计算好,输入n直接输出结果(离线计算)

include

using namespace std;
int T,n;
int a[40];
void init()
{
a[0]=0;a[1]=a[2]=1;
for(int i=3;i<=39;i++) a[i]=a[i-1]+a[i-2]+a[i-3];
}
int main()
{
init();
cin>>T;
for(int step=0;step>n;
printf(“case #%d:\n”,step);
cout<<a[n]<<endl;
}
return 0;
}

10195101505

来点不一样的代码:

def memorize(f):
    memo = {}
    def inner(x):
        if x not in memo:
            memo[x] = f(x)
        return memo[x]
    return inner

memo_ti = memorize(lambda x: 0 if x == 0 else 1 if (x == 1 or x == 2) else memo_ti(x - 1) + memo_ti(x - 2) + memo_ti(x - 3))

cases = int(input())
for i in range(cases):
    print(f'case #0:\n{memo_ti(int(input()))}')
你当前正在回复 博客/题目
存在问题!