Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2020, 22:19   #1
Yorik_1408
Новичок
Джуниор
 
Регистрация: 02.12.2020
Сообщений: 2
По умолчанию рекурсия в питоне

Дали в институте решить такую задачу, уже третьи сутки голову ломаю ничего не получается, если кто нибудь поможет буду очень благодарен! Прошу ПОМОЩИИИ!!!
Входные данные: считываются из файла “input.txt”
Выходные данные: выводятся в файл “output.txt”
Когда Петя Бейсиков принес домой "двойки" по математике, русскому,
литературе и географии, его папа сказал:
— Хватит! Теперь я буду контролировать, как ты делаешь уроки.
Немедленно составь план выполнения домашних заданий по этим предметам
на следующую неделю. Для каждого из этих предметов отметь начало и
завершение выполнения домашних заданий. Используй следующие
обозначения(прикрепил ниже)

Твой план должен подчиняться следующим правилам:
1. Каждое начатое домашнее задание нужно завершить.
2. Нельзя завершать домашнее задание, которое не начато.
3. Если начато более одного домашнего задания, то завершать нужно
сначала то, которое было начато последним.
Напишите программу, которая поможет папе проверить составленный Петей
план выполнения домашних заданий.
Входные данные:
В файле входных данных записана одна строка – непустой план
выполнения домашних заданий. План состоит из условных обозначений,
указанных выше. План заканчивается точкой, обрабатывать которую не
нужно. Длина строки не превышает 200
Выходные данные:
Если план выполнения домашних заданий удовлетворяет всем
правилам, то в файл выходных данных требуется БОЛЬШИМИ буквами
записать строку YES, иначе записать строку NO.
Изображения
Тип файла: png 12345.png (11.8 Кб, 11 просмотров)

Последний раз редактировалось Yorik_1408; 02.12.2020 в 22:42. Причина: забыл добавить входные и выходные данные
Yorik_1408 вне форума Ответить с цитированием
Старый 02.12.2020, 22:56   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Введи обозначения типа:
( - +1
) - -1
[ - +2
] - -2
{ - +3
} - -3
и т.д.
Цитата:
В файле входных данных записана одна строка – непустой план
выполнения домашних заданий. План состоит из условных обозначений,
указанных выше. План заканчивается точкой, обрабатывать которую не
нужно. Длина строки не превышает 200
Т.е. план - это набор открывающихся и закрывающихся скобок. Надо проверить на правильность вложения скобок. Всякая открытая скобка должна быть закрыта вовремя:
({[]}) - правильная последовательность, а <)> - не правильная.
Такой алгоритм хорошо реализуется через стек.
Последовательно вкладываешь открывающиеся скобки (код) в стек и при встрече закрывающейся извлекаешь из стека. Сумма должна давать ноль. Если не ноль, то нарушение.
Стек в Python можно сделать через список.
Код:
myS = []      # инициализация
myS.append(2) # Добавление
n = myS.pop() # извлечение
PS: Если использовать символы скобок, то алгоритм будет немного сложнее.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.12.2020, 06:23   #3
Yorik_1408
Новичок
Джуниор
 
Регистрация: 02.12.2020
Сообщений: 2
По умолчанию

ViktorR,
Код:
st = list(input())[:-1]
stack=[]
start = {')' : '(', '}' : '{', ']' : '[', '>' : '<'}
stack.append(st[0])
d='YES'
i=1
while i < len(st):
    if st[i] in start and stack :
        k = stack.pop()
        if k != start[st[i]] :
            d='NO'
            break
    else:
        stack.append((st[i]))
    i+=1
if stack :
     d='NO'
print(d)
Что то типо такого ?
Но я все равно не понимаю как использовать здесь рекурсию, и запись вывод в текстовые файлы

Последний раз редактировалось Yorik_1408; 03.12.2020 в 06:34.
Yorik_1408 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл в питоне Виктория1112 Python 2 18.07.2019 19:44
функция в питоне. adolphina Помощь студентам 6 19.11.2016 11:23
задача на Питоне zverozavr Фриланс 1 08.06.2012 09:41
Задача на питоне Витя1996 Помощь студентам 0 27.05.2012 09:23
программирование на питоне nat0901 Помощь студентам 7 08.11.2010 19:49