количество строк, которые отличаются не более чем на n позициях?

Мне дали строку T, состоящую только из символов «s», «t», «u», «v». Я хочу найти количество строк длины |T| которая отличается не более чем на n позиции от T. Также каждая такая строка не должна иметь одинаковый символ в трех разных местах, разделенных одинаковым расстоянием. Мой подход заключается в использовании метода динамического программирования, так что dp[i][j][k] обозначает количество таких строк длины i, отличающихся в позиции j и заканчивающихся символом k, где k=s,t,u,v.

if(k совпадает с i-м символом T)

dp[i][j][k]=dp[i-1][j][0]+dp[i-1][j][1]+dp[i-1][j][2]- (строки, которые лишние из-за k добавлены в i-м месте и нарушают условие одинакового расстояния)

но я знаю, что это неправильно?

например, для этого предположим, что T = 'sstt', и мы должны найти строки, которые отличаются не более чем в 2 местах, тогда строки, которые не имеют одного и того же символа в трех разных местах, разделенных одинаковым расстоянием, будут «tstt», «ssts» и т. д.


person smith    schedule 09.04.2016    source источник
comment
Что означают три разных места, разделенных одинаковым расстоянием?   -  person j_random_hacker    schedule 09.04.2016
comment
@j_random_hacker, например, «ttt», «ststst» недействительны. В первом «t» находятся на расстоянии один друг от друга, а во втором ststst они находятся на расстоянии двух друг от друга в трех разных местах.   -  person smith    schedule 09.04.2016
comment
Это выглядит довольно сложно для меня - я даже не могу понять, как вычислить общее количество строк, подчиняющихся этому ограничению, не говоря уже о числе, которое также удовлетворяет ограничению расстояния Хэмминга!   -  person j_random_hacker    schedule 09.04.2016
comment
Конечно, всегда можно сгенерировать и протестировать, но это почти никогда не самый быстрый способ. Но я также хочу сказать: это определенно вопрос из конкурса по программированию, поэтому, пожалуйста, дайте нам ссылку на него, чтобы мы могли убедиться, что он завершен (чтобы мы не помогали вам несправедливо).   -  person j_random_hacker    schedule 11.04.2016


Ответы (1)


Это кажется действительно интересным. Возможно, вы могли бы перечислить количество двух пар, а затем продолжить?

person Mahatma Gandhi    schedule 10.04.2016