C 花生米
简单dp,或者说,找规律。
dp[70]的时候有2073693258389777176,所以dp要用long long存,不然会炸。

先算几组,dp[1]=1,dp[2]=2,dp[3]=4,dp[4]=7,dp[5]=13......
得公式为dp[i]=dp[i-1]+dp[i-2]+dp[i-3];

还是算不出这个公式的话,我可以再详细帮你们算一下。
dp[1]=1 [1]
dp[2]=2 [11,2]
dp[3]=4 [111,12,21,3]
dp[4]=7
[1111,112,121,13],开头为1的时候为dp[3]=4
[211,22],开头为2的时候为dp[2]=2
[31],开头为3的时候为dp[1]=1
所以dp[4]=dp[3]+dp[2]+dp[1]

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[100];
void f(){
    dp[1]=1;
    dp[2]=2;
    dp[3]=4;
    for(int i=4;i<100;i++)
        dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
}
int main(){
    int n;
    f();
    scanf("%d",&n);
    while(n--){
        int m;
        scanf("%d",&m);
        printf("%lld\n",dp[m]);
    }
    return 0;
}