Alenorze
@Alenorze
Не люблю Индию

Как работает эта функция для нахождения палиндромов?

Всем привет, мне нужно понять как работает эта функция, а именно такие моменты, с cps мы получаем матрицу, но зачем ее расширять на 2, как это будет использоватся дальше, мб кто то знает этот алгоритм, скиньте ссылку.

def pal(str): 
    N = len(str) 
    cps = [[0 for i in range(N + 2)]for j in range(N + 2)] 
    
    for i in range(N): 
        cps[i][i] = 1

    for L in range(2, N + 1):
        for i in range(N): 
            k = L + i - 1
            if (k < N): 
                if (str[i] == str[k]): 
                    cps[i][k] = (cps[i][k - 1] +
                    cps[i + 1][k] + 1) 
                else: 
                    cps[i][k] = (cps[i][k - 1] +
                    cps[i + 1][k] -
                    cps[i + 1][k - 1]) 

    return cps[0][N - 1]
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 1
bogolt
@bogolt
Рекомендую вам выводить матрицы после каждого прохода цикла, думаю, что это наведет на понимание его работы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы