Vom avea Pali[k][l] = 1, daca sir[k] = sir[l] si Pali[k+1][l-1]=1 (pentru cazul in care l-k ≥ 2).
Nu inteleg chestia asta... cine e sir[k] si cine e sir[l] (caracterul de pe pozitia k, respectiv l) ?
Vectorul sir este un array de caractere in care se retine sirul din fisierul de intrare. Vrem sa calculam pentru oricare doi indici k si l daca susecventa sir[k], sir[k + 1], ... sir[l - 1], sir[l] este palindrom. Ne vom folosi de proprietatea urmatoare:
O subsecventa este palindrom daca:
1. Primul element este egal cu ultimul, adica sir[k] = sir[l]
2. Subsecventa fara caracterele din capete este tot un palindrom, adica daca sir[k + 1], sir [k + 2] ... sir[l - 2], sir[l - 1] este tot palindrom.
De aici rezulta recurenta de mai sus.
si de ce Pali[k+1][l-1]=1 in caz ca l-k>=2 ?

Nu ai inteles bine ce se spune in articol. Poti folosi recurenta de mai sus pentru subsecvente de lungime >= 3. O reformulare ar fi:
Pentru subsecvente de lungime >= 3, ne vom folosi de proprietatea: Pali[k][l] = 1 daca si numai daca sir[k] = sir[l] si Pali[k + 1][l - 1] = 1.