Массивы двумерные
Дана квадратная таблица А(N, N), элементами которой являются нули и единицы. Установите наличие в ней квадрата, стороны которого состоят из М единиц (M<=N) и параллельны строкам или столбцам таблицы. Если такой квадрат найдется, то нужно вывести координаты его верхнего левого угла
ет задача дет на олимпиаде была (я не знаю где) помню моему соседу с универа дали такуюже (ток там найти самый большой квадрат из нулей или единиц) он спросил где бырете задачи преподаватель ответив это олимпиадные....
можеш поискать ее решение... оно должно быть
Чевота не нашёл такой задачи помаги плиз !!!
Вот, можно так, например. Правда, далеко не оптимально
const
n=10;
a: array[1..n,1..n]of 0..1=(
(1,0,1,0,0,0,0,1,0,0),
(1,0,1,0,0,0,0,1,0,0),
(0,1,1,1,1,1,1,1,0,1),
(1,0,1,0,0,0,0,1,0,0),
(1,0,1,0,1,1,0,1,1,1),
(1,0,1,0,0,0,0,1,0,0),
(1,0,1,0,1,0,0,1,0,0),
(1,0,1,1,1,1,1,1,0,1),
(1,0,1,0,0,0,0,1,0,0),
(1,0,1,0,0,1,0,1,1,0)
);
var
i,j,m: integer;
function Square(x,y: integer): boolean;
function Sum(p,q,u,v: integer): integer;
var
s,i: integer;
begin
s:=0;
for i:=0 to m-1 do s:=s+a[p+i*u,q+i*v];
Sum:=s
end;
begin
Square:=(Sum(x,y,1,0)+Sum(x,y,0,1)+Sum(x,y+m-1,1,0)+Sum(x+m-1,y,0,1)=4*m)
end;
begin
m:=6;
for i:=1 to n-m+1 do for j:=1 to n-m+1 do if Square(i,j) then WriteLn('Sqaure found at ',i,',',j)
end.
М | BAEVIK, будь добр, прочитай п.п.4, 6 и 7 Правил Форума |