Re[23]: О желании жить в Северной Америке
От: mik1  
Дата: 13.09.15 07:43
Оценка: +1 -1
Здравствуйте, sergey2b, Вы писали:

S>у меня была задачка

S>есть файл скажем G что бы небыло соблазна использовать рекурсию
S>проверить что все скобки парные и правильно вложенн
S>([]()) это разрещенно
S>[(]) это нет

Хорошая вариация задачки, мне понравилась.
Да, тут без стека парность скобок никак не проверить. А вот как его реализовать — как раз интересно поговорить.
Для начала стоит уточнить кол-во типов скобок — круглые, квадратные и фигурные или только 2 из них (как у Сергея в условии).
Дальше есть варианты:
1) 1 или 2 бита на скобку (поддерживаем мы 2 или 3 типа), в остальном обычный стек
2) RLE-сжатие, как описал Артем, но оно не прокатит если скобки идут в перемешку: ([([([([([([([([([([
3) если стек становится слишком глубоким, выгружать начало стека (самую дальнюю часть от текущего элемента) на диск
Ну и стоит помнить, что если глубина стека превышает длину файла пополам, то можно смело останавливаться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.