class Solution { public int countVowelStrings(int n) { if(n==1){ return 5; } else if(n==2){ return 15; } //定义以以aeiou为结尾的,长度为i的排序个数 int[][] nums=new int[6][n+1]; //初始化边边角角 for(int i=0;i<=n;i++){ nums[0][i]=0; } nums[1][0]=0; nums[2][0]=0; nums[3][0]=0; nums[4][0]=0; nums[5][0]=0; //初始化以i结尾长度为1的方法 nums[1][1]=1; nums[2][1]=1; nums[3][1]=1; nums[4][1]=1; nums[5][1]=1; //初始化以i结尾长度为2的方法 nums[1][2]=nums[1][1]; nums[2][2]=nums[1][1]+nums[2][1]; nums[3][2]=nums[1][1]+nums[2][1]+nums[3][1]; nums[4][2]=nums[1][1]+nums[2][1]+nums[3][1]+nums[4][1]; nums[5][2]=nums[1][1]+nums[2][1]+nums[3][1]+nums[4][1]+nums[5][1]; //初始化以i结尾长度为3的方法 nums[1][3]=nums[0][3]+nums[1][2]; nums[2][3]=nums[1][3]+nums[2][2]; nums[3][3]=nums[2][3]+nums[3][2]; nums[4][3]=nums[3][3]+nums[4][2]; nums[5][3]=nums[4][3]+nums[5][2]; //nums[i][j]=nums[i-1][j]+nums[i][j-1]; for(int i=1;i<=5;i++){ for(int j=2;j<=n;j++){ nums[i][j]=nums[i-1][j]+nums[i][j-1]; } } return nums[1][n]+nums[2][n]+nums[3][n]+nums[4][n]+nums[5][n]; } }