Работа 3.8 Упр.23 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 23. Расстояние между двумя словами равной длины — это количество позиций, в которых эти слова различаются. В заданном предложении найти пару слов заданной длины с максимальным расстоянием. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-8/23 98
Нужно найти в предложении пару слов заданной длины, у которых расстояние максимально. Расстояние между двумя словами одинаковой длины — это число позиций, в которых соответствующие буквы различаются, то есть $$D=\sum [S_1[i]\ne S_2[i]].$$
Сначала из текста выделяем все слова и запоминаем их длины. Затем среди слов нужной длины перебираем все пары и для каждой пары вычисляем расстояние. Выбираем пару с наибольшим значением $$D$$.
var
words: array[1..1000] of string;
n, i, j, len, maxD, d: integer;
s, w1, w2: string;function Dist(a, b: string): integer;
var
k, r: integer;
begin
r := 0;
for k := 1 to Length(a) do
if a[k] <> b[k] then Inc(r);
Dist := r;
end;begin
readln(len);
readln(s);n := 0;
s := s + ‘ ‘;
w1 := »;
for i := 1 to Length(s) do
begin
if s[i] <> ‘ ‘ then
w1 := w1 + s[i]
else if w1 <> » then
begin
Inc(n);
words[n] := w1;
w1 := »;
end;
end;maxD := -1;
w1 := »;
w2 := »;
for i := 1 to n — 1 do
if Length(words[i]) = len then
for j := i + 1 to n do
if Length(words[j]) = len then
begin
d := Dist(words[i], words[j]);
if d > maxD then
begin
maxD := d;
w1 := words[i];
w2 := words[j];
end;
end;writeln(w1, ‘ ‘, w2, ‘ ‘, maxD);
end.
Алгоритм перебирает все пары слов заданной длины и находит среди них пару с максимальным числом несовпадающих букв.
Ответ: программа, находящая пару слов заданной длины с максимальным расстоянием, приведена выше.