Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемИрина Барановская
1 Задача 05 Сломанный монитор (60 баллов) Олимпиада по информатике Муниципальный этап 1 тур 7 декабря 2013
2 Ввод данных и определение координат «белых пикселей» - W. Тут же определяется количество точек W. readln (n,m); for i:=1 to n do for j:=1 to m do begin t[i,j]:='.'; t[1,3]:='W'; t[1,6]:='W'; t[4,3]:='W'; t[4,6]:='W'; {t[2,2]:='W'; t[4,3]:='W';} {t[1,1]:='W'; t[1,4]:='W'; t[1,6]:='W'; t[2,4]:='W';} {t[2,2]:='W';} end; {ввод массива} f:=0; for i:=1 to n do for j:=1 to m do if t[i,j]='W' then begin f:=f+1; y[f]:=i; x[f]:=j; end; {координаты W вводятся в массивы Х – номер столбца и У – номер строки}
3 Если точка W одна, то выводим на экран массив без изменений if f=1 then for i:=1 to n do begin for j:=1 to m do begin t[y[1],x[1]]:='W'; write (t[i,j]); end; writeln (); end;
4 Если точек больше одной, то сортируем массивы Х и У по возрастанию (можно мах искать) for i:=1 to f do for j:=1 to f-1 do if x[j]>x[j+1] then begin a:=x[j+1]; x[j+1]:=x[j]; x[j]:=a; end; for i:=1 to f do for j:=1 to f-1 do if y[j]>x[j+1] then begin a:=y[j+1]; y[j+1]:=y[j]; y[j]:=a; end;
5 Вычисляем расстояния между наиболее удаленными точками W по столбцам L и строкам D L:=abs(x[1]- x[f]); D:=abs(y[1]- y[f]);
6 Условия, при которых невозможно нарисовать квадрат: 1) размеры «монитора» меньше, чем сторона квадрата 2) расстояние между строками (первой и последней) не равно расстоянию между столбцами IF (l>n) or (d>m) or (l<>d) then writeln(-1);
7
При условии, что квадрат существует и W не находятся в углах квадрата, строим его. Оставляем точки W на месте, заполняем 2 строки +, а затем и 2 столбца заполняем +. if (l d) and (f>1) then begin for i:=1 to n do begin for j:=1 to m do begin IF (t[i,j]<>'W') and (j>=x[1]) and (j<=x[1]+l+1) and ((i=y[1]) or (i=y[f])) then t[i,j]:='+'; IF (t[i,j]<>'W') and ((j=x[1]) or (j=x[1]+l+1)) and (i>y[1]) and (i
8
Строим квадрат при условии, что он существует и W находятся в углах квадрата. Оставляем точки W на месте, заполняем 2 строки +, а затем и 2 столбца заполняем +. if (l 1) then begin for i:=1 to n do begin for j:=1 to m do begin IF (t[i,j]<>'W') and (j>=x[1]) and (j<=x[1]+L) and ((i=y[1]) or (i=y[f])) then t[i,j]:='+'; IF (t[i,j]<>'W') and ((j=x[1]) or (j=x[1]+L)) and (i>y[1]) and (i
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.