1. Главная
  2. Библиотека
  3. Статистика
  4. Напиши программу на языке С++ 17, которая решала бы сле...
Решение задачи

Напиши программу на языке С++ 17, которая решала бы следующую задачу: За прошедший год, состоящий из n месяцев, на планету X каждый месяц совершалась ровно одна кибератака. Произошедшие атаки можно классифицировать следующим образом: атаки типа A

  • Статистика

Условие:

Напиши программу на языке С++ 17, которая решала бы следующую задачу:
За прошедший год, состоящий из n месяцев, на планету X каждый месяц совершалась ровно одна кибератака. Произошедшие атаки можно классифицировать следующим образом:
атаки типа A осуществлялись при помощи фишинга;
атаки типа B осуществлялись при помощи зловредного программного обеспечения;
атаки типа C осуществлялись при помощи прослушивания сетевого трафика.
Президентом планеты X был выбран специальный агент, чтобы предотвратить атаки в этом году. Однако прежде чем приступать к защите, он решил проанализировать, атаки каких типов доставляли много проблем в прошедшем году.
Атака некоторого типа на момент некоторого месяца считается популярной, если с начала года она происходила не реже, чем какая-либо другая атака. Например, если в году было 6 месяцев и атаки происходили в порядке [A,B,C,C,B,C] , то на момент 5-го месяца популярными считаются как атаки типа B, так и атаки типа C (потому что за 5 месяцев произошла одна атака типа A и по две атаки типов B и C).
Неприятностью типа атаки будем считать количество месяцев, в рамках которых данная атака считалась популярной. Так, в случае выше атака A будет иметь неприятность 3 (она неприятна на моментах месяцев 1, 2, 3), атака B будет иметь неприятность 3 (она неприятна на моментах месяцев 2, 3, 5), атака C будет иметь неприятность 4 (она неприятна на моментах месяцев 3, 4, 5, 6).
Определите максимальную неприятность по всем типам атак.
Формат входных данных
Первая строка содержит число n (1<=n<=105) — количество месяцев в году на планете X.
Вторая строка содержит символы s1, . . . , sn (si принадлежит A,B,C), где si — тип атаки, произошедшей в i-й месяц.
Формат выходных данных
Выведите одно число — максимальную неприятность по всем типам атак.
ограничение по времени 3 секундs
ограничение памяти 256 МБ

Решение:

Для решения данной задачи на языке C++ 17, мы будем использовать следующие шаги:

1. Прочитаем количество месяцев n и последовательность атак.
2. Создадим массив для подсчета количества атак каждого типа (A, B, C).
3. Пройдем по каждому месяцу и будем обновлять количество атак для каждого типа.
4. На каждом шаге будем определять, какие атаки являются популярными, и будем подсчитывать неприятность для каждого типа атак.
5. В конце выведем максимальную неприятность.

Теперь давайте напишем программу:

1. : Мы считываем количество месяцев и строку , представляющую типы атак. 2. : Используем для хранения количества атак каждого типа и их неприятности. 3. : Проходим по каждому месяцу, увеличиваем счетчик для текущего типа атаки и обновляем максимальное количество атак. 4. : Проверяем, какие атаки популярны, и увеличиваем их неприятность. 5. : В конце мы проходим по всем типам атак и находим максимальную неприятность, которую выводим на экран. - Временная сложность: O(n), так как мы проходим по массиву атак один раз. - Пространственная сложность: O(1), так как количество типов атак фиксировано (A, B, C). Эта программа должна эффективно работать в пределах заданных ограничений.

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет