Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача - комбинации цифр в стеке LIFO 
:(
    Опции темы
galileopro
Дата 18.9.2015, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

Репутация: нет
Всего: нет



Дан стек типа LIFO. Над ним производятся 10 операций "пуш" и 10 операций "поп" в произвольном порядке.
Операции пуш помещают в стек одну цифру из ряда 0123456789 в прямом порядке. Операции поп выводят на экран 1 цифру и исключают ее из стека.
Напишите метод, на вход которому подается произвольная комбинация из 10 цифр от 0 до 9 и он определяет, могла ли такая комбинация появится в результате тех 10 операций пуш и 10 операций поп.

Помогите мне понять, как решить такую задачу. Какие есть идеи.

Чтобы было понятно:
1) последовательность 0000000000 нельзя получить. Потому, что после того как будет push 0
следующая операция push может взять 1 символ из ряда 123456789.

2) Последовательность 6543217089
получена так
7 push 0123456 <- stack
6 pop 654321 <- console
1 push 07 <- stack
2 pop 65432170 <- console
1 push 8
1 pop 654321708
1 push 9
1 pop 6543217089

Задание сформулировано корректно. Почему именно так я не знаю. Уточнить негде. Это вся информация, которая есть. Как решить я не знаю.
PM MAIL WWW ICQ   Вверх
LSD
Дата 18.9.2015, 20:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Интересная задачка smile

Итак:
- первый элемент может быть любой из ряда
- дальше у нас 2 варианта: сразу выполнить еще один pop или сделать несколько push оставшихся элементов
- значит следующий элемент это или предыдущий или любой из последующих (если есть)

Для твоего примера 6543217089:
- из ряда 0123456789 выкидываем 6 и ставим на его место указатель текущего элемента: 012345^789
- следующий элемент 5: проверяем что он один из предыдущих: это так, выкидываем его и ставим указатель на его место 01234^789
- повторяем до 1: 0^789
- следующий элемент 7 это не предыдущий но один из следующих, выкидываем его и ставим указатель на его место 0^89
- следующий элемент 0: проверяем что он один из предыдущих: это так, выкидываем его и ставим указатель на его место ^789
- следующий элемент 8, предыдущих нет, выкидываем его и ставим указатель на его место ^9
- следующий элемент 9, предыдущих нет, выкидываем его и остается пустой список


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
a0730
Дата 19.9.2015, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



не понял, почему нельзя получить последовательность 0000000000?
push 0
pop 0
push 0
pop 0
и т.д.


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
galileopro
Дата 19.9.2015, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

Репутация: нет
Всего: нет



push 0
pop 0

Дальше остается 123456789 над которыми можно производить операции пуш и поп.

ПО условию эти пуш и поп производятся над 0123456789 в прямом порядке.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.