Тема 24. Обработка символьной информации

24.01 Поиск максимальной подстроки

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка символьной информации
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#29907

Текстовый файл состоит не более чем из 106  символов, которые являются цифрами от 1 до 9, знаками плюс, минус. Найдите подпоследовательность, состоящую из максимального количества положительных чисел. (Положительное число - число, перед которым либо нет знака, либо знак "+")

Для выполнения этого задания следует написать программу. Воспользуйтесь файлом "Задание_35_ДЗ". В ответе запишите сумму данной подпоследовательности, если подпоследовательностей с максимальным количеством положительных элементов несколько, то в ответе запишите максимальную сумму.

Вложения к задаче
Показать ответ и решение
# Читаем содержимое файла
f = open("Задание_35_ДЗ__tcn1.txt").read()

# Инициализируем переменные
max_plus = 1  # Максимальное количество последовательных знаков ’+’
count_plus = 1  # Текущее количество последовательных знаков ’+’
max_sum = int(f[0])  # Максимальная сумма чисел
sum = int(f[0])  # Текущая сумма чисел

# Проходим по всем символам строки, начиная со второго и с шагом 2
for i in range(1, len(f) - 1, 2):
    if f[i] == ’+’:
        # Если текущий символ — ’+’, добавляем следующее число к сумме
        sum += int(f[i + 1])
        count_plus += 1  # Увеличиваем счетчик последовательных ’+’

        # Проверяем, превышает ли текущий счетчик максимальный
        if count_plus > max_plus:
            max_plus = count_plus  # Обновляем максимальное количество ’+’
            max_sum = sum  # Обновляем максимальную сумму
        elif count_plus == max_plus:
            # Если счетчики равны, проверяем, является ли текущая сумма больше максимальной
            if sum > max_sum:
                max_sum = sum  # Обновляем максимальную сумму
    else:
        # Если текущий символ не ’+’, сбрасываем сумму и счетчик
        sum = 0
        count_plus = 0

    # Выводим максимальную сумму чисел, соответствующих самой длинной последовательности ’+’
print(max_sum)

 

Ответ: 62

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!