CodeForces 166E Tetrahedron

题意:给你一个四边形,让你从顶点 出发,经过k步返回顶点,问你一共有多少种做法

思路:dp【i】代表每一步,dp【i】【0】代表顶点,其他顶点都是相互转移的,类似于选择的dp

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e7+5;
const int MOD=1e9+7;
int dp[maxn][5];
int main() {
    int n; scanf ("%d",&n);
    memset (dp,0,sizeof (dp) );
    dp[0][0]=1;
    for (int i=1; i<=n; i++) {
        for (int j=0; j<4; j++) {
            for (int k=0; k<4; k++) {
                if (j==k) { continue; }
                dp[i][j]+=dp[i-1][k];
                if (dp[i][j]>=MOD) { dp[i][j]%=MOD; }
            }
        }
    }
    cout<<dp[n][0]<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/lalalatianlalu/p/8456362.html