分析:
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; }