0 / 0 / 0
Регистрация: 08.08.2017
Сообщений: 3
1

Необходима оптимизация

07.04.2018, 02:42. Показов 539. Ответов 3
Метки нет (Все метки)

Доброго времени суток, уважаемые!
Нужна оптимизация кода, ибо тестовая программа его заворачивает по превышению времени исполнения. Поломал голову, но ничего путного в нее не пришло - знаний пока не хватает (я только в начале пути). Прошу у вас помощи в этом деле. Заранее благодарен.
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
42
43
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <set>
using namespace std;
int main() {
int n;
map <string, vector <string>> m;
set <string> st;
vector <string> rv;
cin >> n; cin.get();
for (int i = 0; i < n; i++) {
    string str, s, s1;
    vector <string> vec;
    getline(cin, str);
    str = str + ", ";
    s = str.substr(0, str.find(' ')); rv.push_back(s);
    str = str.substr(str.find(' ') + 3, str.size() - 1);
    while (str.size() > 1) {
        s1 = str.substr(0, str.find(','));
        vec.push_back(s1);
        st.insert(s1);
        str = str.substr(str.find(' ') + 1, str.size() - 1);
    }
    m[s] = vec;
}
cout << st.size() << endl;
for (auto now : st) {
    cout << now << " - ";
    int temp = 0;
    for (int i = 0; i < rv.size(); i++) {
        for (auto now1 : m[rv[i]]) {
            if (now1 == now) {
                if (temp == 0) {cout << rv[i]; temp++;}
                else cout << ", " << rv[i];
            }
        }
    }
    cout << endl;
}
return 0;
}
Добавлено через 15 минут
Сама задача заключается в создании и выводе, скажем, папуасско-трансильванского словаря на основании входного трансильвано-папуасского.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2018, 02:42
Ответы с готовыми решениями:

Необходима консультация
Доброго времени суток. Нужна помощь по заданию во вложении. Можно объяснить что это и с чем его...

Какая необходима книга ?
Здравствуйте. Есть игра,в которую можно подключать свою библиотеку. Я бы хотел узнать,какую книгу...

Необходима реализация системы синглтонов
Здравствуйте! Необходима реализация системы синглтонов. Требования: Подзагрузка ресурсов...

Класс строк, необходима ли инкапсуляция?
Волнует такой вот вопрос, писал класс строк с целью перегрузки операторов, в качестве полей класса:...

3
2480 / 1907 / 951
Регистрация: 21.12.2010
Сообщений: 3,474
Записей в блоге: 10
07.04.2018, 12:58 2
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
42
43
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <regex>
using namespace std;
 
int main() 
{
    int n;
    cin >> n;
    cin.get();
    map <string, vector<string>> smp;
    string str;
    ssub_match orig;
    std::regex reg("[[:alpha:]]+");
    for (int i = 0; i < n; ++i)
    {
        getline(cin, str);
        int iw = 0;
        for (std::sregex_iterator ib(str.begin(), str.end(), reg), ie; ib != ie; ++ib, ++iw)
        {
            if (0 == iw)
            {
                orig = ib->operator[](0);
            }
            else
            {
                smp[ib->operator[](0)].emplace_back(orig);
            }
        }
    }
 
    for (auto const& pr : smp) 
    {
        cout << pr.first << " - ";
        for (auto const& val : pr.second)
        {
            cout << val << ", ";
        }
        cout << endl;
    }
}
1
0 / 0 / 0
Регистрация: 08.08.2017
Сообщений: 3
07.04.2018, 19:21  [ТС] 3
Круто, не все понял, конечно - буду разбираться сейчас. И почему-то программа не выдает результат...

Добавлено через 45 минут
Все выдает, неверный формат исходных данных вводил. Благодарю за помощь
0
2480 / 1907 / 951
Регистрация: 21.12.2010
Сообщений: 3,474
Записей в блоге: 10
07.04.2018, 20:45 4
Цитата Сообщение от SerVKos Посмотреть сообщение
И почему-то программа не выдает результат
У меня выдаёт если всё латиницей вводить. Но можно и русский сделать
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
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <regex>
#include <cstdlib>
using namespace std;
 
/*
4
on - на, по, в, о, об
at - на, в
about - о, об
by - по
*/
 
int main()
{
    system("chcp 1251");
    int n;
    cin >> n;
    cin.get();
    map <string, vector<string>> smp;
    string str;
    ssub_match orig;
    std::regex reg("([а-яА-ЯёЁ]+|[[:alpha:]]+)");
    for (int i = 0; i < n; ++i)
    {
        getline(cin, str);
        int iw = 0;
        for (std::sregex_iterator ib(str.begin(), str.end(), reg), ie; ib != ie; ++ib, ++iw)
        {
            if (0 == iw)
            {
                orig = ib->operator[](0);
            }
            else
            {
                smp[ib->operator[](0)].emplace_back(orig);
            }
        }
    }
    cout << endl;
 
    for (auto const& pr : smp)
    {
        cout << pr.first << " - ";
        for (auto const& val : pr.second)
        {
            cout << val << ", ";
        }
        cout << endl;
    }
}
Миниатюры
Необходима оптимизация  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2018, 20:45
Помогаю со студенческими работами здесь

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

Необходима помошь ! Переход с каталога в подкаталог
Напишите функцию, печатающую размер файла в удобном виде: если файл меньше одного килобайта -...

Хочу постичь дзен, необходима консультация
В массиве целых чисел найти непрерывный подмассив, сумма элементов которого максимальна. Необходимо...

Необходима реализация изменения частоты дискретизации на С++
Мне очень нужна помощь в области изменения частоты дискретизации с помощью различных способов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru