Изменения

Перейти к: навигация, поиск

Префикс-функция

37 байт добавлено, 21:18, 16 июня 2015
м
Псевдокод
'''int''' minimal_alphabet('''int'''[] p):
int c = 1
s[0] = 0
'''for''' i = 1 '''to''' p.length - 1
'''if ''' p[i] == 0 '''fill'''(used, false)
k = p[i - 1]
'''while ''' k > 0
used[s[k]] = '''true'''
k = p[k - 1]
s[i] = -1
'''for''' j = 1 '''to''' c
'''if ''' !used[j]
s[i] = j;
'''break ''' '''if ''' s[i] == -1
s[i] = c++
'''else'''
s[i] = s[p[i] - 1]
'''return''' c
79
правок

Навигация