Ну вот, как обещал - возможный вариант решения:
Код:
CONST
N=9;
TYPE
Vector=Array[1..N] of Integer;
VAR
A:Array[1..N] of Vector;
i,j,p:Integer;
Function Tst(V:Vector):Boolean;
var
k:Integer;
b:boolean;
begin
k:=0;
b:=true;
repeat
Inc(k);
if V[k]<>V[N-k+1] then b:=false;
until (Not(b)) or (k=(N div 2));
Tst:=b;
end;
BEGIN
Randomize;
For i:=1 to N do
begin
For j:=1 to N do
A[i][j]:=50-Random(100);
If (i=1) or (i=N-1) then
For j:=1 to (N div 2) do
A[i][N-j+1]:=A[i][j];
For j:=1 to N do
write(A[i][j]:4);
Writeln;
end;
Writeln;
p:=0;
Writeln('Line numbers:');
For i:=1 to N do
If Tst(A[i]) then
begin
write(i:4);
Inc(p);
end;
If p=0 then write('No such lines!');
Readln;
END.
Здесь заведомо "палиндромами" сделаны первая и предпоследняя строки.
Константу N (размерность матрицы) можете поменять по своему вкусу.