Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
game1progg
31 / 1 / 0
Регистрация: 07.01.2016
Сообщений: 44
#1

Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода) - C++

03.11.2016, 16:23. Просмотров 170. Ответов 3
Метки нет (Все метки)

есть код, нужно cout и cin перевести на printf и scanf дополнительных библиотек не подключать!
проблема в том что при вводе 14 работает дольше секунды

P.S. задача №372 acmp, ща скину условие.
Кликните здесь для просмотра всего текста

Скобки - 2

(Время: 1 сек. Память: 16 Мб Сложность: 52%)
Вывести все правильные скобочные выражения длиной N, состоящие из круглых и квадратных скобок.

Входные данные

Входной файл INPUT.TXT содержит единственное четное натуральное число N, не превышающее 14.

Выходные данные

В выходной файл OUTPUT.TXT выведите всевозможные правильные скобочные выражения по одному в каждой строке в произвольном порядке.



Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<fstream>
#include<deque>
using namespace std;
int n;
string s;
bool ok(string s){
deque<char>v;
for(int i=0;i<n;i++){
if(s[i]=='(')v.push_back('(');
if(s[i]=='[')v.push_back('[');
if(s[i]==')'&&(!v.empty()&&v.back()=='('))v.pop_back();
else if(s[i]==')'&&(v.empty()||v.back()!='('))return 0;
if(s[i]==']'&&(!v.empty()&&v.back()=='['))v.pop_back();
else if(s[i]==']'&&(v.empty()||v.back()!='['))return 0;
}
if(v.empty()==1)return 1;
return 0;
}
void rec(int pos){
if(pos==n){if(ok(s))cout<<s;return;}
s[pos]='(';
rec(pos+1);
s[pos]=')';
rec(pos+1);
s[pos]='[';
rec(pos+1);
s[pos]=']';
rec(pos+1);
}
int main(){
ios_base::sync_with_stdio(0);
cin>>n;
for(int i=0;i<n;i++)
s+='(';
rec(0);
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2016, 16:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода) (C++):

Вывести все правильные скобочные выражения длиной N, состоящие из круглых и квадратных скобок - C++
Вывести все правильные скобочные выражения длиной N, состоящие из круглых и квадратных скобок. Технические условия Входные...

Вывести все правильные скобочные выражения длины N, состоящие из круглых и квадратных скобок - C++
Здравствуйте! Решил данную задачу, но один тест не проходит по времени...Можно ли как-то оптимизировать данный код? Мое решение: ...

Как ускорить работу? - C++
Прога ещё не доработана, сейчас интересует именно графический режим, когда нажимается клавиша 1-4 один из 4-х квадратов должен...

Ускорить работу функций - C++
Здравствуйте. Не подскажете как можно ускорить работу функций в цикле? А то линия получается прерывистой, когда быстро водишь мышкой. ...

Ускорить работу программы - C++
Лексикографический порядок чисел (Время: 1 сек. Память: 16 Мб Сложность: 31%) Натуральные числа от 1 до N упорядочены...

Как ускорить работу с файлами? - C++
Предполагается, что программа будет работать с файлами размера 300-500МБ. Эти обычные функции работают слишком медленно. Может быть стоит...

3
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
03.11.2016, 16:41 #2
Цитата Сообщение от game1progg Посмотреть сообщение
проблема в том что при вводе 14 работает дольше секунды
Это проблема в алгоритме, а не отсутствии микрооптимизации в виде замены операторов ввода/вывода на функции.
0
game1progg
31 / 1 / 0
Регистрация: 07.01.2016
Сообщений: 44
03.11.2016, 17:11  [ТС] #3
MrGluck мне учитель сказал что надо перевести на scanf printf , и я должен показать что я это сделал.
но был бы очень благодарен если вы сможете написать более рабочий вариант, с теми же библиотеками...
0
GbaLog-
Любитель чаепитий
3014 / 1382 / 335
Регистрация: 24.08.2014
Сообщений: 4,906
Записей в блоге: 1
Завершенные тесты: 2
03.11.2016, 17:32 #4
Цитата Сообщение от game1progg Посмотреть сообщение
с теми же библиотеками...
Но Вы даже не подключили библиотек, только заголовки.
Кстати, с Вашими "библиотеками" не получится решить данную задачу, потому что они не содержат таких функций, как printf и scanf. Эти функции содержит заголовок <stdio.h>.
0
03.11.2016, 17:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2016, 17:32
Привет! Вот еще темы с ответами:

Ускорить работу кода - VBA
Привет всем, Столкнулся с такой проблемой, что мне нужно, что бы код находил нужную ячейку и удалял всю строку со смещением вверх...

Преобразование изображения: ускорить работу кода - Python
Добрый. Как можно ускорить следующий код? Мне необходимо конвертировать определенный цвет в пространстве RGB в пространство LAB. Я хочу...

Задачка 435 с acmp.ru -ускорить работу кода - Алгоритмы
Вот мой код работает медленно, а так вроде бы правильный, нноо хотелось бы оптимизировать также нашел како-то код на си вроде тоже...

Как ускорить работу кода, избавившись от Memo? - Delphi
Всем привет! Есть у меня парсер данных со спорт сайта, так вот в нем я паршу коеффициенты (кто хоть раз делал ставки в букмекерской...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru