Задать вопрос
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 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
bogolt
@bogolt
Рекомендую вам выводить матрицы после каждого прохода цикла, думаю, что это наведет на понимание его работы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
22 янв. 2025, в 04:08
6000 руб./за проект
21 янв. 2025, в 23:55
20000 руб./за проект
21 янв. 2025, в 23:35
80000 руб./за проект