3.小红的字符串计数-腾讯娱乐集团2022暑期实习生招聘技术类岗位

动态规划
dp[n][k] = dp[n - 1][k] + 25 * dp[n - 1][k - 1];
1个字符是无效的连续字符段;
2个及以上才是有效的连续字符段
1 import java.util.*; 2 3 4 public class Solution { 5 /** 6 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 7 * 8 * 9 * @param n int整型 10 * @param k int整型 11 * @return int整型 12 */ 13 public int numsOfStrings (int n, int k) { 14 // write code here 15 int[][] dp = new int[n + 1][k + 1]; 16 dp[0][0] = 1; 17 dp[1][0] = 1; 18 dp[2][1] = 26; 19 if(n > 2) dp[3][1] = 26; 20 for(int i = 4; i <= n; ++i){ 21 int tk = n >> 1; 22 tk = Math.min(k, tk); 23 for(int j = 1; j <= tk; ++j){ 24 dp[i][j] = dp[i - 1][j] + 25 * dp[i - 2][j - 1]; 25 dp[i][j] %= 1000000; 26 } 27 } 28 29 return dp[n][k]; 30 } 31 }