HDU 不容易系列之(3)—— LELE的RPG难题

来源:互联网 发布:淘宝店铺管理规则 编辑:程序博客网 时间:2024/06/05 10:11

原题链接:
思路:我用0,1,2代替三种颜色。我假设第一位是0(最后结果乘以3),最后计算dp[n][1]+dp[n][2]。详见代码
dp[i][0]=dp[i-1][1]+dp[i-1][2];
dp[i][1]=dp[i-1][2]+dp[i-1][0];
dp[i][2]=dp[i-1][0]+dp[i-1][1];

#include<bits/stdc++.h>using namespace std;const int maxn=55;typedef long long ll;int n;ll dp[maxn][3];void init(){    memset(dp,0,sizeof(dp));    dp[1][0]=1;    for(int i=2;i<maxn;i++){        dp[i][0]=dp[i-1][1]+dp[i-1][2];        dp[i][1]=dp[i-1][2]+dp[i-1][0];        dp[i][2]=dp[i-1][0]+dp[i-1][1];    }}int main(){    //freopen("in.txt","r",stdin);    init();    while(cin>>n){        //cout<<"n : "<<n<<endl;        //n等于1需要单独判断        if(n==1){            cout<<3<<endl;        }else{            cout<<3*(dp[n][1]+dp[n][2])<<endl;        }    }    return 0;}
原创粉丝点击