Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массивы двумерные(задача)

Автор: BAEVIK 3.02.2009 2:23

Массивы двумерные
Дана квадратная таблица А(N, N), элементами которой являются нули и единицы. Установите наличие в ней квадрата, стороны которого состоят из М единиц (M<=N) и параллельны строкам или столбцам таблицы. Если такой квадрат найдется, то нужно вывести координаты его верхнего левого угла

Автор: amega 3.02.2009 2:35

ет задача дет на олимпиаде была (я не знаю где) помню моему соседу с универа дали такуюже (ток там найти самый большой квадрат из нулей или единиц) он спросил где бырете задачи преподаватель ответив это олимпиадные....

можеш поискать ее решение... оно должно быть

Автор: BAEVIK 3.02.2009 2:50

Цитата(amega @ 2.02.2009 22:35) *

ет задача дет на олимпиаде была (я не знаю где) помню моему соседу с универа дали такуюже (ток там найти самый большой квадрат из нулей или единиц) он спросил где бырете задачи преподаватель ответив это олимпиадные....

можеш поискать ее решение... оно должно быть

Я поищу но ты тож если найдёш напиши !!!

Автор: amega 3.02.2009 3:13

Цитата
Я поищу но ты тож если найдёш напиши !!!

да я если щас не засну то зделаю

Автор: BAEVIK 3.02.2009 3:50

Цитата(amega @ 2.02.2009 23:13) *

да я если щас не засну то зделаю

good

Автор: BAEVIK 4.02.2009 17:34

Чевота не нашёл такой задачи помаги плиз !!!

Автор: Lapp 4.02.2009 18:47

Вот, можно так, например. Правда, далеко не оптимально smile.gif

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 Правил Форума