考虑n-2 n-1 n

z[n] 代表n个块 可行方案

1  n-2 和n-1 同 3*z[n-2]

2  n-2和n-1不同 2*(z[n-1]-z[n-2]); 减一减 然后可能是其中一种 *2

z[n]=2*z[n-1]+z[n-2];

z[1]=3;
z[2]=9;

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h> using namespace std;
typedef long long ll;
#define MAXN 105 ll z[MAXN]; int main()
{
z[]=;
z[]=;
for(int i=;i<=;i++)
z[i]=*z[i-]+z[i-];
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
printf("%lld\n",z[n]);
}
return ;
}
05-02 19:25