hdu 2154 跳舞毯(简单DP)

题意:

有一个圆圆的毯,被平均分成三个扇形。分为标记为A,B,C。

小余从A开始跳,每次可跳到相邻的扇形上。(A->B 或 A->C)

问小余跳n次,最后回到扇形A的方案数是多少。

思路:

A,B,C是三个状态。我们画一棵生长的树,一层一层下来,然后发现每一层上其实最多就只有三种状态。所以明显是可以用DP解喽

直接看代码。,

代码:

int main(){

    int n;
    int f[1005][5];

    while(cin>>n,n){
        f[0][0]=1;  f[0][1]=0;  f[0][2]=0;
        rep(i,1,n){
            f[i][0]=f[i-1][1]+f[i-1][2];
            f[i][1]=f[i-1][0]+f[i-1][2];
            f[i][2]=f[i-1][1]+f[i-1][0];
            f[i][0]%=mol;
            f[i][1]%=mol;
            f[i][2]%=mol;
        }
        cout<<f[n][0]<<endl;
    }

    return 0;
}
原文地址:https://www.cnblogs.com/fish7/p/4229992.html