Изменения

Перейти к: навигация, поиск
Псевдокод
n = x.size
m = y.size
'' ''<font color="green">//инициализация массивов динамики </font>'' '''for''' i scs = 0 '''toint''' n[][] '''for''' j pref = 0 '''toint''' m scs[i][j] = 0 prev[i][j] = 0 '' ''<font color="green">//случай равенства одного из индексов 0 </font>''
'''for''' i = 0 '''to''' n
scs[i][0] = i
'''for''' j = 0 '''to''' m
scs[0][j] = j
''
'''for''' i = 1 '''to''' n
'''for''' j = 1 '''to''' m
''<font color="green">//случай равенства элементов </font>''
'''if''' x[i] == y[j]
scs[i][j] = 1 + scs[i - 1][j - 1]
prev[i][j] = 1
''<font color="green">//случай неравенства элементов </font>''
'''else'''
''<font color="green">// случай неравенства элементов </font>''
'''if''' scs[i - 1][j] > scs[i][j - 1]
scs[i][j] = 1 + scs[i][j - 1]
prev[i][j] = 3
''<font color="green">//вывод SCS </font>''
'''fun''' printSCS(n: '''int''', m: '''int'''):
i = n
j = m
ans = [] ''<font color="green">// массив ответа </font>''
''
'''while''' i > 0 '''and''' j > 0
'''if''' prev[i][j] == 1
ans.append(x[i])
i -= 1
''
''<font color="green">// добавляем оставшиеся символы первой последовательности </font>''
'''while''' i > 0
ans.append(y[j])
j -= 1
''
'''reverse'''(ans) ''<font color="green">// разворачиваем последовательность, так как шли с конца </font>''
'''return''' ans
63
правки

Навигация