Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
1

Можно как-то оптимизировать этот код?

28.12.2017, 22:28. Показов 636. Ответов 16
Метки нет (Все метки)

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
#include <iostream>
using namespace std;
 
int main() {
    unsigned int num[1000000], trueNum[1000000], a, howMany, endwrite, fail;
    fail = 0;
    endwrite = 0;
    cin >> howMany;
 
    for (int i = howMany - 1; i >= 0; i--) cin >> num[i];
 
    for (int i = 0; i < howMany; i++) {
        a = num[i];
        for (int j = 0; j <= endwrite; j++) {
            if (a == trueNum[j]) fail++;
        }
        if (fail == 0) {
            trueNum[endwrite] = a;
            endwrite++;
        }
        fail = 0;
    }
    cout << endwrite << endl;
    for (int i = endwrite - 1; i >= 0; i--)
    {
        cout << trueNum[i] << " ";
    }
 
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2017, 22:28
Ответы с готовыми решениями:

Как можно оптимизировать код?
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; using namespace std; int main() {...

Как можно оптимизировать данный код?
И... Ещё один вопрос: Дан участок кода С++: #include &lt;iostream&gt; #include &quot;Windows.h&quot; ...

Наследование классов как можно оптимизировать код и условие
Создал два класса родительский монстр и наследный демон. у демона появляется значение разум и...

Определить, что делает код, и как его можно оптимизировать
не могу понять что делает код . как его можно максимально сократить? #include &lt;iostream&gt; #include...

16
es geht mir gut
11492 / 4724 / 1181
Регистрация: 27.07.2011
Сообщений: 11,433
28.12.2017, 22:40 2
Использовать динамические массивы ?
0
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
29.12.2017, 17:05  [ТС] 3
Динамические массивы не работают, а оптимизировать надо так, чтобы программа выполнялась хотя бы на 5-10% быстрее
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
29.12.2017, 17:15 4
Цитата Сообщение от nogll Посмотреть сообщение
Динамические массивы не работают
А мужики-то не знают!

Цитата Сообщение от nogll Посмотреть сообщение
а оптимизировать надо так, чтобы программа выполнялась хотя бы на 5-10% быстрее
Ну сюдя по коду там вручную вбивается до миллиона чисел. Так что над просто быстрее жать кнопки.
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,493
29.12.2017, 17:20 5
что хоть код делает, не могу с ходу понять?
напихивает в trueNum, продлевает цикл, потом сравнивает, потом снова напихивает
кстати trueNum[] не инициализирован в начале хотя он далее сравнивается с 'a'

наглядывается одна оптимизация - брейк добавить после fail++
C++
1
if (a == trueNum[j]) fail++;
0
3452 / 2802 / 766
Регистрация: 25.03.2012
Сообщений: 10,227
Записей в блоге: 1
29.12.2017, 17:25 6
Как звучит задача?

Добавлено через 2 минуты
Raali, есть подозрение, что он удаляет повторения из массива
0
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,493
29.12.2017, 17:27 7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
есть подозрение, что он удаляет повторения из массива
а может просто абстрактный код на собеседовании)
да, все таки похоже trueNum на выходе будет массивом num без повторений
0
191 / 127 / 52
Регистрация: 19.01.2010
Сообщений: 518
29.12.2017, 18:46 8
Сравнение элементов в цикле? - сначала отсортировать оба массива, потом сравнивать
0
Модератор
1638 / 1088 / 487
Регистрация: 17.07.2012
Сообщений: 5,339
29.12.2017, 19:06 9
Можно как-то оптимизировать этот код?
Когда же уже люди начнут понимать, что главное это алгоритм? Сортировку пузырьком как не оптимизируй, все равно медленно будет сортировать. А чтобы придумать алгоритм, нужно задачу знать. Но ТС конечно же считает, что все сразу поймут что ему нужно и легко "оптимизируют этот код".
0
34 / 32 / 10
Регистрация: 15.07.2017
Сообщений: 123
29.12.2017, 19:53 10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
есть подозрение, что он удаляет повторения из массива
Тогда можно числа пихать сразу в unordered_set, он сам удалит лишние, причем дубликаты будет искать очень быстро. Выигрыш в скорости будет значительным.
0
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
31.12.2017, 13:52  [ТС] 11
Цитата Сообщение от oldnick85 Посмотреть сообщение
Тогда можно числа пихать сразу в unordered_set, он сам удалит лишние, причем дубликаты будет искать очень быстро. Выигрыш в скорости будет значительным.
Я не профи в c++ можно пример кода с unordered_set
0
3452 / 2802 / 766
Регистрация: 25.03.2012
Сообщений: 10,227
Записей в блоге: 1
31.12.2017, 13:57 12
nogll, да ты разберись сначала с динамическими массивами... не профи он. Будешь так урывками учить - никогда и не станешь профи.
0
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
31.12.2017, 14:00  [ТС] 13
еще могу дать тесты для задачи
Вложения
Тип файла: rar Новая папка (4).rar (8.56 Мб, 6 просмотров)
0
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
31.12.2017, 14:03  [ТС] 14
Входные данные
В первой строке вводится одно число N – количество сортировок, которые сделал Вася (1 ≤ N ≤ 106). Во второй строке содержатся N натуральных чисел, не превосходящих 105 – номера столбцов, по которым осуществлялась сортировка, в том порядке, в котором Вася это делал. Среди чисел могут быть равные.

Выходные данные
В первую строку выведите одно число – минимальное количество сортировок, которые требуется произвести. Во второй строке требуется вывести номера столбцов, по которым нужно осуществлять сортировку, в том порядке, в котором следует проводить сортировки.

Добавлено через 1 минуту
Цитата Сообщение от nogll Посмотреть сообщение
106
=> 10 в 6 степени
0
1362 / 999 / 316
Регистрация: 28.07.2012
Сообщений: 2,764
31.12.2017, 14:27 15
nogll, а задача-то как полностью звучит?
Или нужно самостоятельно догадываться, что за сортировки имеются в виду, и что за "порядок, в котором следует"?
0
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
31.12.2017, 18:52  [ТС] 16
Цитата Сообщение от nonedark2008 Посмотреть сообщение
nogll, а задача-то как полностью звучит?

В программе Microsoft Excel имеется возможность сортировки таблицы по значениям какого-нибудь столбца. В процессе сортировки переставляются целиком строки таблицы (а не только значения в столбце, по которому осуществляется сортировка). При этом используется устойчивая сортировка, то есть если в этом столбце в нескольких строках стоят одинаковые значения, то эти строки после сортировки будут расположены в том же порядке, что и до сортировки (т.е. раньше будет идти та строка, которая до сортировки шла раньше).

Вася последовательно сортировал всю таблицу несколько раз. Вам дана последовательность номеров столбцов, по которым Вася сортировал таблицу — в этой последовательности один и тот же столбец мог встречаться несколько раз, например, если Вася отсортировал ее сначала по 1-му столбцу, потом по 2-му, а затем снова по 1-му.

Вам требуется написать программу, которая определит, можно ли было как-то оптимизировать последовательность сортировок так, чтобы результат не изменился (независимо от содержания таблицы). Например, если последовательность состоит из двух сортировок по столбцу 1, то можно оставить только одну такую сортировку.

Входные данные
В первой строке вводится одно число N – количество сортировок, которые сделал Вася (1 ≤ N ≤ 106). Во второй строке содержатся N натуральных чисел, не превосходящих 105 – номера столбцов, по которым осуществлялась сортировка, в том порядке, в котором Вася это делал. Среди чисел могут быть равные.

Выходные данные
В первую строку выведите одно число – минимальное количество сортировок, которые требуется произвести. Во второй строке требуется вывести номера столбцов, по которым нужно осуществлять сортировку, в том порядке, в котором следует проводить сортировки.
0
1 / 1 / 0
Регистрация: 28.12.2017
Сообщений: 8
31.12.2017, 18:56  [ТС] 17
не проходит 19 20 21 23 24 тесты. Сами тесты в архиве
Вложения
Тип файла: rar Новая папка (4).rar (8.56 Мб, 5 просмотров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.12.2017, 18:56

Как можно еще оптимизировать код?
Как еще можно оптимизировать данный код? Если вкратце, то он выводит значение АВ, если ключ = вводу...

Как можно перевести этот код с паскаля в с++?
program razbienie_mnozhestwa(input,output); var i,j,k,n:byte;wper:arrayof boolean;...

Как можно перевести этот код с паскаля в с++?
uses crt; const n=10; var a:array of integer; i,j,p,k:byte; begin...

Регистрация и авторизация пользователя - можно ли оптимизировать код
Можно ли как-то упростить такой код, или это - то что нужно? Простенькие до ужаса регистрация...


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

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

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