Форум сайта python.su
Здравствуйте, уважаемые знатоки. Я - мама начинающего программера. Дочь бьётся над этими двумя задачами уже много времени, но её решения не работают. Помогите, пожалуйста. Сегодня нужно решение до 23 часов. Очень верю, что поможете. Спасибо!
1 задача
Очередь с поддержкой минимума
Реализуйте очередь с поддержкой минимума.
Входные данные
Первая строка входных данных содержит число n — количество операций с очередью. В каждой следующей строке содержится число ai (0≤ai≤10000). Если ai>0, то это число необходимо добавить в очередь. Если ai=0, то это запрос на удаление элемента из очереди.
Выходные данные
На каждый запрос удаления элемента из очереди необходимо вывести значение минимального элемента очереди (учитывая значение удаляемого элемента). Если запрос удаления вызывается на пустой очереди, то необходимо вывести −1.
Примеры
Ввод 1
9
5
4
3
6
0
0
0
0
0
Вывод
3
3
3
6
-1
2 задача
Очередь с защитой от ошибок
Реализуйте структуру данных “очередь”. Напишите программу, содержащую описание очереди и моделирующую работу очереди, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:
push n — добавить в очередь число n (значение n задаётся после команды). Программа должна вывести ok;
pop — удалить из очереди первый элемент. Программа должна вывести его значение;
front — программа должна вывести значение первого элемента, не удаляя его из очереди;
size — программа должна вывести количество элементов в очереди;
clear — программа должна очистить очередь и вывести ok;
exit — программа должна вывести bye и завершить работу.
Перед исполнением операций front и pop программа должна проверять, содержится ли в очереди хотя бы один элемент. Если во входных данных встречается операция front или pop и при этом очередь пуста, то программа должна вместо числового значения вывести строку error.
Входные данные
Вводятся команды управления очередью, по одной команде в строке. Среди них обязательно присутствует команда exit.
Выходные данные
Требуется вывести протокол работы очереди, по одному сообщению в строке.
Примеры
Ввод 1
push 1
front
exit
Вывод
ok
1
bye
Ввод 2
size
push 1
size
push 2
size
push 3
size
exit
Вывод
0
ok
1
ok
2
ok
3
bye
Отредактировано NaTalya12345 (Окт. 9, 2021 16:56:41)
Офлайн
NaTalya12345а что будет после 23 часов?
Сегодня нужно решение до 23 часов
Офлайн
Карета превратится в тыкву)
Офлайн
n = int(input()) input_data = [] out_data = [] for i in range(n): data = int(input()) if data > 0: input_data.append(data) else: if not input_data: out_data.append(-1) else: out_data.append(min(input_data)) input_data.pop(0) for i in out_data: print(i)
9 5 4 3 6 0 0 0 0 0 3 3 3 6 -1 Process finished with exit code 0
Офлайн
NaTalya12345Может лучше понять почему ее решения не работают?Вы можете проверять мои решения,но ваша дочь от этого не научиться.
Дочь бьётся над этими двумя задачами уже много времени, но её решения не работают
Офлайн
xam1816Если бы было так просто. Вы абсолютно правы. Но Сириус не показывает ошибку. Просто не принимает ответы. Причем, в программе всё верно, а на платформе не получается
Офлайн
xam1816Программа выполнялась слишком долго и была прервана
Офлайн
NaTalya12345это у моего решения?
Программа выполнялась слишком долго и была прервана
Офлайн
memory = [] out = [] while True: command = input() if command == 'exit': out.append('bye') break elif 'push' in command: n = command.split(' ')[1] memory.append(n) out.append('ok') elif command == 'pop': if memory: out.append(memory.pop(0)) else: out.append('error') elif command == 'front': if memory: out.append(memory[0]) else: out.append('error') elif command == 'size': out.append(len(memory)) elif command == 'clear': memory.clear() out.append('ok') for i in out: print(i)
Офлайн
xam1816Да
Офлайн