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

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

Восстановить пароль Регистрация
 
game1progg
31 / 1 / 0
Регистрация: 07.01.2016
Сообщений: 38
03.11.2016, 16:23     Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода) #1
есть код, нужно 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2016, 16:23     Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода)
Посмотрите здесь:

C++ Вывести все правильные скобочные выражения длиной N, состоящие из круглых и квадратных скобок
Подскажите пожалуйста как ускорить работу программы! C++
C++ Как ускорить работу (поиск вхождений подстроки)?
Как ускорить работу? C++
C++ Можно ли как нибудь ускорить работу цикла for?
Задача про рюкзак - ускорить работу программы C++
C++ Ускорить работу программы
Как ускорить работу с файлами? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
03.11.2016, 16:41     Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода) #2
Цитата Сообщение от game1progg Посмотреть сообщение
проблема в том что при вводе 14 работает дольше секунды
Это проблема в алгоритме, а не отсутствии микрооптимизации в виде замены операторов ввода/вывода на функции.
game1progg
31 / 1 / 0
Регистрация: 07.01.2016
Сообщений: 38
03.11.2016, 17:11  [ТС]     Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода) #3
MrGluck мне учитель сказал что надо перевести на scanf printf , и я должен показать что я это сделал.
но был бы очень благодарен если вы сможете написать более рабочий вариант, с теми же библиотеками...
GbaLog-
Не Эксперт C++
1527 / 631 / 176
Регистрация: 24.08.2014
Сообщений: 2,551
Записей в блоге: 1
Завершенные тесты: 2
03.11.2016, 17:32     Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода) #4
Цитата Сообщение от game1progg Посмотреть сообщение
с теми же библиотеками...
Но Вы даже не подключили библиотек, только заголовки.
Кстати, с Вашими "библиотеками" не получится решить данную задачу, потому что они не содержат таких функций, как printf и scanf. Эти функции содержит заголовок <stdio.h>.
Yandex
Объявления
03.11.2016, 17:32     Вывести все правильные скобочные выражения (оптимизировать алгоритм, ускорить работу кода)
Ответ Создать тему
Опции темы

Текущее время: 09:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru