题目
设定了具体的位置规则,即可用动态规划。
代码写的有问题,但是大体思路还是在的,具体细节以后再改。
class Solution {
public int countVowelPermutation(int n) {
int[][] dp = new int[n][5];
int mod = 10^9+7;
dp[0][0] = 1;
dp[0][1] = 1;
dp[0][2] = 1;
dp[0][3] = 1;
dp[0][4] = 1;
for(int i=1;i<n;i++){
for(int j=0;j<5;j++){
if(j==0){
dp[i][j] += dp[i-1][1]%mod;
dp[i][j] += dp[i-1][2]%mod;
dp[i][j] += dp[i-1][4]%mod;
}else if(j==1){
dp[i][j] += dp[i-1][0]%mod;
dp[i][j] += dp[i-1][2]%mod;
}else if(j==2){
dp[i][j] += dp[i-1][1]%mod;
dp[i][j] += dp[i-1][3]%mod;
}else if(j==3){
dp[i][j] += dp[i-1][2]%mod;
}else{
dp[i][j] += dp[i-1][2]%mod;
dp[i][j] += dp[i-1][3]%mod;
}
dp[i][j] %= mod;
}
}
int sum = 0;
for(int i=0;i<5;i++){
sum += dp[n-1][i]%mod;
sum = sum%mod;
}
return sum;
}
}