这题是递归加模拟。
用L[i]表示i个步伐向左走走的次数,用R[i]表示。。。想右走走的次数。f[i].....总共的方案次数。
向左走 L[i]=L[i-1]+f[i-1]
R[i]=R[i-1]+f[i-1]
f[i]=f[i-1]+L[i-1]+R[i-1]
参考代码:
#include<stdio.h>
int main()
{
int t,n;
int L[21],R[21],f[21];
L[0]=R[0]=f[0]=1;
scanf("%d",&t);
for(int i=1;i<=20;i++){
L[i]=L[i-1]+f[i-1];
R[i]=R[i-1]+f[i-1];
f[i]=R[i-1]+L[i-1]+f[i-1];
}
while(t--){
scanf("%d",&n);
printf("%d\n",f[n]);
}
return 0;
}