После перечитывания кажется, что я неправильно понял вопрос.Я думал с точки зрения каждой строки, представляющей отдельное слово, и целью было проверить, является ли это «слово» палиндромным.
После перечитывания, я думаю, что вопрос действительно больше похож на: «Учитывая последовательностьдо 20 000 символов, найдите самую длинную палиндромную подпоследовательность. О, кстати, ввод разбит на строки длиной не более 80 символов. "
Если это правильно, я бы проигнорировал длину строкиполностью.Я прочитал весь файл в один буфер, а затем начал искать палиндромы в этом буфере.
Чтобы найти палиндромы, я бы просто прошел через каждую позицию в массиве и нашел бы максимально длинный палиндром с его центральной точкой:
for (int i=1; i<total_chars; i++)
for (n=1; n<min(i, total_chars-i); n++)
if (array[i+n] != array[i-n])
// Candidate palindrome is from array[i-n+1] to array[i+n-1]