1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.8 Упр.23 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 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.

Алгоритм перебирает все пары слов заданной длины и находит среди них пару с максимальным числом несовпадающих букв.

Ответ: программа, находящая пару слов заданной длины с максимальным расстоянием, приведена выше.



Общая оценка
3.5 / 5
Другие учебники
Другие предметы