1 Востаннє редагувалося Q-bart (18.02.2015 18:28:53)

Тема: Дужкова послідовність

Вітаю!
Я успішно(як на мене) написав олімпіаду з програмування. Тож вирішив, що Pascal відіграв свою функцію у моєму навчанні програмуванню(основи)...
Тож я тепер почав вчити Python. Проходжу курс на prometheus.org.ua(УКРАЇНСЬКІ ОРЛАЙН КУРСИ!!!) і на codecademy..

Отож, зараз вже п'ятий урок на prometheus. Зустрів задачу, до якої не знаю навіть як приступити...

Прихований текст
Вхідні дані: рядок, що складається з відкриваючих та закриваючих круглих дужок - аргумент командного рядка. Для передачі в якості рядка послідовність береться в подвійні лапки.

Результат роботи: рядок "YES", якщо вхідний рядок містить правильну дужкову послідовність; або рядок "NO", якщо послідовність є неправильною. Дужкова послідовність вважається правильною, якщо всі дужки можна розбити попарно "відкриваюча"-"закриваюча", при чому в кожній парі закриваюча дужка слідує після відкриваючої.

Наприклад
Вхідні дані: ")("
Результат: NO
Вхідні дані: "(()(()"
Результат: NO
Вхідні дані: "(()(()()))"
Результат: YES
Вхідні дані: "())()(()())(()"
Результат: NO

Допоможіть з алгоритмом, або хоча б поясіть, будь-ласка, з чого приступитися до задачі..
Наперед вдячний.

Навчаюсь вчитись, щоб навчатись.

2

Re: Дужкова послідовність

Вітаю Вас з успішною олімпіадою.
Стосовно завдання, дивіться, створюйте змінну counter яку при проходженні рядка посимвольно, при "(" збільшуйте, а при ")" зменшуйте на одиницю.
Але є одне але, якщо

counter <= 0 

то зменшувати не можна, таким чином ми збавимось від ")(" такого варіанту.

п.с. Це думки, я не певен, що правильно.
п.с.с. Якщо каунтер менше нуля став, то зразу можна далі не йти, і виводити результат НОУ

x
Подякували: Q-bart1

3

Re: Дужкова послідовність

Вітаю Вас з успішною олімпіадою.

Дякую.
Програма працює... Пройшла всі тести :)
Дуже дякую... :)

Навчаюсь вчитись, щоб навчатись.