Pers.narod.ru. Алгоритмы. Элементы матрицы, все соседи которых больше их |
В заданной матрице A[n,n] вывести те её элементы, все соседи которых больше данного элемента. Соседство учитывается только по горизонтали и вертикали.
Мне было лень обрабатывать с помощью условий особые случаи "соседства" элементов по краям матрицы (для первых и последних строки и столбца), я сделал так, как часто и поступают ленивые программисты на практике - просто описал матрицу с индексами строки и столбца 0..n+1 вместо 1..n и заполнил образовавшуюся "кайму" значениями MAXINT (максимальное целое, все целые будут меньше этого значения). Теперь "соседство" описывается элементарно одним условием.
const n=3;
var a:array [0..n+1,0..n+1] of integer;
i,j,t:integer;
begin
writeln ('Matrix:');
for i:=1 to n do
for j:=1 to n do read (a[i,j]);
for j:=1 to n do begin
a[0,j]:=MAXINT; a[n+1,j]:=MAXINT;
a[j,0]:=MAXINT; a[j,n+1]:=MAXINT;
end;
writeln ('Items');
for i:=1 to n do
for j:=1 to n do begin
t:=a[i,j];
if (a[i-1,j]>t) and (a[i+1,j]>t) and (a[i,j-1]>t) and (a[i,j+1]>t)
then write (t,' ');
end;
reset (input); readln;
end.
|
|