Leetcode-5216 Count Vowels Permutation(统计元音字母序列的数目)

 1 typedef long long ll;
 2 typedef pair<int,int> P;
 3 #define _for(i,a,b) for(register int i = (a);i < b;i ++)
 4 #define _rep(i,a,b) for(register int i = (a);i > b;i --)
 5 #define INF 0x3f3f3f3f
 6 #define MOD 1000000007
 7 #define maxn 10003
 8 
 9 class Solution
10 {
11     public:
12         ll dp[5][20003];
13         int countVowelPermutation(int n)
14         {    
15             dp[0][1] = dp[1][1] = dp[2][1] = dp[3][1] = dp[4][1] = 1;
16             _for(i,2,n+1)
17             {
18                 dp[0][i] += dp[1][i-1]+dp[2][i-1]+dp[4][i-1];
19                 dp[1][i] += dp[0][i-1]+dp[2][i-1];
20                 dp[2][i] += dp[1][i-1]+dp[3][i-1];
21                 dp[3][i] += dp[2][i-1];
22                 dp[4][i] += dp[2][i-1]+dp[3][i-1];
23                 _for(j,0,5)
24                     dp[j][i] %= MOD;
25             }
26             int ans = 0;
27             _for(i,0,5)
28                 ans += dp[i][n],ans %= MOD;
29             return ans;
30         }
31 };
原文地址:https://www.cnblogs.com/Asurudo/p/11627165.html