分析:
A(N)表示第N步向上走的,B(N)表示第N步向左右走的
F(N) = A(N)+B(N)
A(N) = A(N-1)+B(N-1)
B(N) = 2*A(N-1) + B(N-1)
=>F(N) = 3*A(N-1) + 2*B(N-2) = 2*F(N-1) + A(N-1) = 2*F(N-1) + A(N-2) + B(N-2) = 2*F(N-1) + F(N-2)
#include <stdio.h>
int main()
{
int i,N,T;
double a[21];
a[0]=1;
a[1]=3;
a[2]=7;
for (i=3; i<=20; i++) {
a[i]=2*a[i-1]+a[i-2];
}
scanf("%d",&T);
while (T--) {
scanf("%d",&N);
printf("%.0f\n",a[N]);
}
return 0;
}
本文介绍了一种通过递推公式解决数列问题的方法,并提供了一个C语言实现的例子。该方法利用了动态规划的思想,避免了重复计算,提高了计算效率。
132

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



