Помощь - Поиск - Пользователи - Календарь
Полная версия: Харьковская районная олимпиада [задания]
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Флогримм
вот я и вернулся blum.gif как тут все изменилось.. какой форум стал красивый... круто.. круто, блин! всех с наступающим!!

я собсна по какому вопросу. давеча писал олимпиаду районную, задания ниже. меня интересуют ваши соображения по поводу 3 и 4 задач. сразу скажу, что с 4й я не справился sad.gif( wacko.gif
xds
Дополнения к условию задачи №4:
- координаты кочек - целые числа;
- не существует двух кочек с одинаковыми координатами;
- мальчик стоит на кочке;
- ягода - клюква.

Решение задачи №4.

program Prob4;

{$N+}

const
MaxN = 200;

var
n, ms, i, j: Integer;
x, y: array[0..MaxN] of Integer;
r: Single;
f: array[0..MaxN, 0..MaxN] of Boolean;
w: array[0..MaxN] of Boolean;
t: Boolean;

procedure Step(i, s: Integer);
var
j: Integer;
begin
w[i] := True;
Inc(s);
if s > ms then Exit;
if f[i, 0] and w[n] then ms := s;
for j := 1 to n do
if f[i, j] and not w[j] then Step(j, s);
w[i] := False;
end;

begin
Assign(Input, 'input.txt');
Reset(Input);
Read(n, r);
for i := 1 to n do
Read(x[i], y[i]);
Close(Input);
x[0] := 0;
y[0] := 0;
for i := 0 to n - 1 do
for j := i + 1 to n do
begin
t := Sqrt(Sqr(x[i] - x[j]) + Sqr(y[i] - y[j])) <= r;
f[i, j] := t;
f[j, i] := t;
end;
ms := MaxInt;
Step(0, 0);
if ms = MaxInt then
Writeln(-1)
else
Writeln(ms);
end.


P.S. Ужасно оформлены условия - трактуй как хочешь! Жуть...
xds
Решение 3-й задачи.

program Prob3;

procedure CheckWord(const Word: String);
var
i, j, k: Integer;
f: Boolean;
begin
if Word <> '' then
for i := (Length(Word) + 1) shr 1 to Length(Word) do
for j := 1 to Length(Word) - i + 1 do
begin
f := True;
for k := 0 to i shr 1 - 1 do
if Word[j + k] <> Word[j + i - 1 - k] then
begin
f := False;
Break;
end;
if f then
begin
Writeln(Word);
Exit;
end;
end;
end;

var
c: Char;
w: String;
f: Boolean;

begin
Assign(Input, 'input.txt');
Reset(Input);
w := '';
f := True;
while not Eof do
begin
Read( c);
case c of
' ':
begin
CheckWord(w);
w := '';
f := True;
end;
'0'..'9':
if f then w := w + c;
else
begin
w := '';
f := False;
end;
end;
end;
CheckWord(w);
Close(Input);
end.
GoodWind
Флогги , ты хде был blink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.