1190上台阶
卡了6次…
注意认真推导递推式f[i]=f[i-1]+f[i-2]+f[i-3]
我还是用的平常的做法,三个循环,输入计算输出,然后开两个一位数组,但是可想而知,这种做法多一个循环多一个数组,在时间空间上面都不优秀,所以需要进行优化
进行计算的递推数组f没办法优化,但是输入的n可以省去,同时也会省去一个循环,先计算,然后循环输入在线输出
#include<iostream>
#include<cstdio>
using namespace std;
int n;
long long f[size];
int a;
int main()
{
f[1]=1,f[2]=2,f[3]=4;
for(int i=4;i<=70;i++)
{
f[i]=f[i-1]+f[i-2]+f[i-3];
}
while(scanf("%d",&a)==1&&a)
{
cout<<f[a]<<endl;
}
return 0;
}
递归优化与动态规划:1190上台阶问题
博客讲述了在解决1190上台阶问题时,通过递推公式f[i]=f[i-1]+f[i-2]+f[i-3]进行优化,减少了循环和额外数组的使用。作者通过预计算阶数小于等于70的台阶数,实现了在线输出输入阶数的答案,提高了时间和空间效率。
622

被折叠的 条评论
为什么被折叠?



