Предмет: Информатика, автор: MAXIMkriper

Задача 9. Исправление успеваемости (вручную). Как вы наверняка знаете, Вовочка не является примерным учеником. За учебный год н получил много разных отметок, и теперь не знает, как показать дневник своему тцу. Отец Вовочки считает хорошими отметки 6 и выше, а все остальные считает лохими. Дело в том, что Вовочке было обещано лишить его отдыха в Летней школе по информатике в том случае, если он когда-либо получит три или более плохие отметки подряд.

Вовочка уже давно научился стирать отметки из дневника, но с каждой стертой отметкой вероятность раскрытия такой секретной операции возрастает. В настоящий момент перед ним стоит непростая задача удалить наименьшее -

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

информатике. Программа получает на вход в первой строке целое число n (1 << n < 5000), где п

количество отметок, полученных Вовочкой за год. Вторая строка содержит последовательность целых чисел от 1 до 10. Отметки заданы в хронологическом порядке.

В первую строку выведите - наименьшее количество отметок, которые надо удалить из последовательности.

Во вторую строку выведите последовательность отметок, которая получается после оптимального исправления успеваемости. Если возможных оптимальных решений несколько выведите любое.

Паскаль абц

Ответы

Автор ответа: ilyav1nokurov
1

Ответ:Для решения данной задачи требуется использовать жадный алгоритм.

Алгоритм:

Считываем число n - количество отметок.

Считываем последовательность отметок и записываем её в массив.

Создаем массив dp длиной n+1, в котором будем хранить количество отметок, которые нужно удалить до i-й отметки (0 <= i <= n).

Инициализируем dp[0] = 0 и dp[1] = 0.

Для каждой i-й отметки (2 <= i <= n) рассматриваем два варианта:

5.1. Оставляем i-ю отметку. Тогда, если i-я отметка хорошая (больше или равна 6), dp[i] = dp[i-1], иначе dp[i] = dp[i-1] + 1.

5.2. Удаляем i-ю отметку. Тогда dp[i] = dp[i-2] + 1, если i-1-я и i-я отметки плохие, и dp[i] = dp[i-2], если i-1-я отметка плохая, а i-я хорошая или наоборот.

Находим минимальное значение dp[n].

Создаем новый массив res длиной n-min, в котором будем хранить последовательность отметок, полученную после оптимального исправления успеваемости.

Проходим от конца массива dp до начала и восстанавливаем последовательность отметок, добавляя каждую i-ю отметку в res, если dp[i] не равно dp[i-1].

Выводим минимальное количество удаленных отметок и полученную последовательность отметок.

Пример кода на Pascal:

var

 n, i, j, min, count: integer;

 marks, dp, res: array of integer;

begin

 readln(n);

 setlength(marks, n);

 for i := 0 to n - 1 do

   read(marks[i]);

 setlength(dp, n + 1);

 dp[0] := 0;

 dp[1] := 0;

 for i := 2 to n do

 begin

   if marks[i - 1] >= 6 then

     dp[i] := dp[i - 1]

   else

     dp[i] := dp[i - 1] + 1;

   if (i >= 3) and (marks[i - 1] < 6) and (marks[i - 2] < 6) and (dp[i] > dp[i - 2] + 1) then

     dp[i] := dp[i - 2] + 1;

   if (i >= 3) and ((marks[i - 1] >= 6) xor (marks[i - 2] >= 6)) and (dp[i] > dp[i - 2]) then

     dp[i] := dp[i - 2];

 end

Объяснение:

Похожие вопросы
Предмет: Математика, автор: allaberganovamir54
Предмет: Русский язык, автор: 6kl
помогите решить тест пжпжпжпж
А 10 В каком ряду во всех словах на месте пропусков пишется буква Ы?
А) ц..ган, ц.рк, ц..ркуль
Б) ц..плёнок, продукц..я, сестриц.н
В) делигац..я, акац..я, ц..ферблат
Г) ц..плёнок. ц..ц, на ц..почках
А 11 Какое слово состоит из приставки, корня, одного суффикса и
окончания?
А) рассадник
Б) устаревала
В) здоровье
Г) столовая
А 12 Какое слово выпадает из общей закономерности?
А) драйвер
Б) верстак
В) лекарь
Г) стамеска
А 13 В каком слове правописание приставки определяется её значением «
неполное действие»?
А) приготовь
Б) приглядывались
В) притих
Г) примеры
А 14 Укажите ошибочное суждение:
А) в слове ЧУВСТВОВАЛ – девять звуков
Б) в слове ЕЩЁ все согласные звуки мягкие
В) в слове ЗДРАВСТВУЙТЕ все согласные звуки твёрдые
Г) в слове РЕЗКО буква З обозначает [с ]
А 15 В каком слове правописание суффикса является исключением из
правили?
А) военная
Б) соломенная
В) каменная
Г) оловянный
А 16 Какое из ниже перечисленных слов является устаревшим?
А) синий
Б) чело
В) гиппопотам
Г) орфография
А 17 Какой фразеологический оборот является синонимичный фразеологизму
« стреляный воробей»?
А) тёртый калач
Б) плечом к плечу
В) сесть в лужу
Г) за семью замками
А 18 Какое из ниже перечисленных слов образовано способом сложения
части и целого слова?
А) дымоход
Б) мыловар
В) медпункт
Г) МВД
А 19 В каком ряду все представленные существительные являются
разносклоняемыми?
А) бремя, время, стремя
Б) кино, имя, молоко
В) клещи, плоскогубцы, часы
Г) пламя, какаду, кофе