Прошла неделя конкурса. Некоторые участники добрались до третьего уровня.
Наверное, многие участники догадались, что этот
конкурс посвящён теме "Графы". Эта тема очень велика, здесь мы посмотрим только
маленькую часть.
Посмотрим, на что была рассчитана задача нулевого уровня. Она была рассчитана на
использование матрицы связности (что это, ищите в теории графов).
В нашем случае эта матрица это квадратный массив 26x26 (A..Z,A..Z), где на
пересечении указано, являются ли соседями индексы строки и столбца.
Тогда решением задачи будет заполнение матрицы связности, а затем вывод одной
строки этой матрицы.
Вот пример программы, которая решает эту задачу.
program Task0;
type
BLchar = 'A'..'Z';
var
A : array [BLchar, BLchar] of boolean;
i,
j : BLchar;
X : BLchar;
N : byte;
k,
p,
f : byte;
S : string;
begin
for i:='A' to 'Z' do
for j:='A' to 'Z' do A[i, j]:=false;
readln(N);
for k:=1 to N do
begin
readln(S);
for p:=1 to length(S) do
for f:=1 to length(S) do
A[S[p],S[f]]:=true;
end;
readln(X);
for i:='A' to 'Z' do
if (A[X,i]) and (i<>X) then write(i);
writeln;
end.
Для решения следующих задач рекомендую почитать что-нибудь по теории графов.