Количество различных слов размера N с не более чем K смежными гласными

Опубликовано: 22 Сентября, 2022

Даны два целых числа N и K , задача состоит в том, чтобы найти количество различных строк, состоящих из строчных букв длины N , которые могут быть образованы не более чем K смежными гласными. Поскольку ответ может быть слишком большим, напечатайте answer%1000000007 .

Input: N = 1, K = 0
Output: 21
Explanation: All the 21 consonants are there which has 0 contiguous vowels and are of length 1.

Input: N = 1, K = 1
Output: 26

Подход: Идея решения этой проблемы основана на динамическом программировании. Выполните следующие шаги, чтобы решить проблему:

  • Пусть dp[i][j] — количество способов составить различные строки длины i , где последние j символов строки — гласные.
  • Итак, состояния динамического программирования:
    • Если j = 0 , то dp[i][j] = (dp[i-1][0] + dp[i-1][1] +……+ dp[i-1][K])*21 (представленный целочисленной переменной sum ) поскольку последний добавленный символ должен быть согласным, то только значение j станет равным 0 независимо от его значения в предыдущих состояниях.
    • Если i<j , то dp[i][j] = 0 . Так как невозможно создать строку, содержащую j гласных и имеющую длину меньше j .
    • Если i == j , то dp[i][j] = 5 i , потому что количество символов в строке равно количеству гласных, поэтому все символы должны быть гласными.
    • Если j<i , то dp[i][j] = dp[i-1][j-1]*5 , потому что строка длины i с последними j символами гласной может быть сделана только в том случае, если последний символ является гласной, а строка длины i-1 имеет последние j – 1 символ как гласные.
  • В качестве ответа выведите сумму dp[n][0] + dp[n][1] + …… + dp[n][K] .

Ниже приведена реализация вышеуказанного подхода.

Временная сложность: O(N×K)
Вспомогательное пространство: O(N×K)

РЕКОМЕНДУЕМЫЕ СТАТЬИ