Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
В постфиксной записи (или обратной польской записи) операция записывается после двух операндов. Например, сумма двух чисел A
и B
записывается как A B +
. Запись B C + D *
обозначает привычное нам (B + C) * D
, а запись A B C + D * +
означает A + (B + C) * D
. Достоинство постфиксной записи в том, что она не требует скобок и дополнительных соглашений о приоритете операторов для своего чтения.
В единственной строке записано выражение в постфиксной записи, содержащее цифры и операции +
, -
, *
. Цифры и операции разделяются пробелами. В конце строки может быть произвольное количество пробелов.
Необходимо вывести значение записанного выражения.
8 9 + 1 7 - *
-102
На складе хранятся контейнеры с товарами N различных видов. Все контейнеры составлены в N стопок. В каждой стопке могут находиться контейнеры с товарами любых видов (стопка может быть изначально пустой).
Автопогрузчик может взять верхний контейнер из любой стопки и поставить его сверху в любую стопку. Необходимо расставить все контейнеры с товаром первого вида в первую стопку, второго вида – во вторую стопку и т.д.
Программа должна вывести последовательность действий автопогрузчика или сообщение о том, что задача решения не имеет.
Формат входных данных
В первой строке входных данных записано одно натуральное число N, не превосходящее 500. В следующих N строках описаны стопки контейнеров: сначала записано число ki – количество контейнеров в стопке, а затем ki чисел – виды товара в контейнерах в данной стопке, снизу вверх. В каждой стопке вначале не более 500 контейнеров (в процессе переноса контейнеров это ограничение может быть нарушено).
Формат выходных данных
Программа должна вывести описание действий автопогрузчика: для каждого действия напечатать два числа – из какой стопки брать контейнер и в какую стопку класть. (Обратите внимание, что минимизировать количество операций автопогрузчика не требуется.) Если задача не имеет решения, необходимо вывести одно число 0. Если контейнеры изначально правильно размещены по стопкам, то выводить ничего не нужно.
Пример
Входные данные |
Выходные данные |
3 4 1 2 3 2 0 0 |
1 2 1 3 1 2 |
Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:
ok
. ok
. bye
и завершить работу. Команды управления стеком вводятся в описанном ранее формате по 1 на строке.
Гарантируется, что набор входных команд удовлетворяет следующим требованиям: максимальное количество элементов в стеке в любой момент не превосходит 100, все команды pop
и back
корректны, то есть при их исполнении в стеке содержится хотя бы один элемент.
Требуется вывести протокол работы со стеком, по 1 сообщению в строке
push 3 push 14 size clear push 1 back push 2 back pop size pop size exit
ok ok 2 ok ok 1 ok 2 2 1 1 0 bye
Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:
ok
. ok
. bye
и завершить работу. back
и pop
программа должна проверять, содержится ли в стеке хотя бы один элемент. Если во входных данных встречается операция back
или pop
, и при этом стек пуст, то программа должна вместо числового значения вывести строку error
.
Вводятся команды управления стеком, по одной на строке
Программа должна вывести протокол работы стека, по одному сообщению на строке
size push 1 size push 2 size push 3 size exit
0 ok 1 ok 2 ok 3 bye
Реализуйте структуру данных "стек". Напишите программу, содержащую описание стека и моделирующую работу стека, реализовав все указанные здесь методы. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения каждой команды программа должна вывести одну строчку. Возможные команды для программы:
ok
. ok
. bye
и завершить работу. Размер стека должен быть ограничен только размером доступной оперативной памяти. Перед исполнением операций back
и pop
программа должна проверять, содержится ли в стеке хотя бы один элемент. Если во входных данных встречается операция back
или pop
, и при этом стек пуст, то программа должна вместо числового значения вывести строку error
.
Вводятся команды управления стеком, по одной на строке
Требуется вывести протокол работы стека, по одному сообщению на строке
push 3 push 14 size clear push 1 back push 2 back pop size pop size exit
ok ok 2 ok ok 1 ok 2 2 1 1 0 bye