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

Необходимо ускорить выполнение - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Температура процессора и мат.платы http://www.cyberforum.ru/cpp/thread653705.html
Коллеги нужна очень срочна ваша помощь. Надо написать на С++ программу. Чтобы она определяла температуру как процессора так мат.платы.
C++ Нужно написать программу в Visual c++)) Нужно написать программу в Visual c++)) http://www.cyberforum.ru/cpp/thread653491.html
Создание класса на с++ C++
Ребят срочно помогите решить задачку плиз... Создайте класс Rectangle (прямоугольник). Класс имеет атрибуты length (длина) и width (ширина), каждый из которых по умолчанию равен 1. Он имеет функции-элементы, которые вычисляют пе-риметр (perimeter) и площадь (area) прямоугольника. Имеются функции записи и чтения как для length, так и для width. Функции записи должны проверять, что length и...
C++ Прошу реализовать программу из предложенных языков программирования: Си, С++, С#, Java, Паскаль, Делфи
Выполнить программу на любом из предложенных языков программирования: Си, С++, С#, Java, Паскаль, Делфи. 1) В двумерном массиве случайных чисел (М строк. N столбцов) определить номера столбцов, среднее арифметическое элементов которых меньше среднего арифметического элементов во всём массиве. 2) Описать структуру с именем ORDER, содержащую следующие поля: - Расчётный счёт плательщика; -...
C++ Можно ли реализовать КПС на С+? http://www.cyberforum.ru/cpp/thread650267.html
Можно ли реализовать КПС (Компьютерную поисковую систему) на подобии вот такой - КПС на С+? Каким способом?
C++ Найти сумму чисел Фибоначчи, меньших заданного числа 1) Задан массив М натуральных чисел, упорядоченный по неубыванию, т.е .: M<=M<=...<=M. Найти первое натуральное число, не представимое суммой никаких элементов этого массива, при этом сумма может состоять и из одного слагаемого, но каждый элемент массива может входить в нее только один раз. 2) Найти сумму чисел Фибоначчи, меньших заданного числа Q. Добавлено через 5 часов 31 минуту помогите... подробнее

Показать сообщение отдельно
OlegRuno
2 / 2 / 0
Регистрация: 28.05.2012
Сообщений: 38

Необходимо ускорить выполнение - C++

18.09.2012, 11:28. Просмотров 1002. Ответов 9
Метки (Все метки)

Хеллоу эврибади. Проблема такая, имеется 2 вложенных цикла:
C++
1
2
3
4
5
6
7
8
for(int i=0;i<n;i++){
            for(int j=i;j<n;j++){
                flag=false;
                if(mass[j]>mass[i]){mass[i]=mass[j];flag=true; break;}
                
            }
            if (flag==false){mass[i]=0;}
        }
Он не проходит по времени выполнения, для ясности картины покажу условие всей задачи:

Входной файл: input.txt
Выходной файл: output.txt
Время на тест: 1 секунда
В массиве целых чисел необходимо заменить каждое число на другое из этого же массива, ближайшее большее по значению расположенное справа от заменяемого и большее заменяемого, или на ноль при отсутствии такового.

Формат входного файла:

В первой строке входного файла input.txt записано число - количество чисел в наборе. Во второй строке записаны сами числа через один пробел. Количество чисел в наборе не превосходит 100000. Значения всех чисел целые и по модулю не превосходят 2147483647. Гарантируется, что для предложенного набора чисел результат всегда существует. Каждая строка заканчивается переходом на новую строку.
Формат выходного файла:

В первую строку выходного файла output.txt необходимо вывести через один пробел получившиеся значения.

Пример ввода:

5
1 -2 8 3 5
Пример вывода:

8 8 0 5 0

Вот полностью рабочий код:
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 <stdio.h>
#include <fstream>
 
using namespace std;
 
int main()
{
    int n = 0;
    int *mass;
    mass = new int [100000];
 
    fstream F;
    F.open("input.txt", ios::in);
    F>>n;
    for(int i=0;i<n;i++)
    {
        F>>mass[i];
    }
    F.close();
 
    bool flag = false;
    for(int i=0;i<n;i++)
    {
        flag = false;
        for(int j=i;j<n;j++)
        {
        if(mass[j]>mass[i]) {mass[i]=mass[j]; flag = true; break;}
        }
        if (flag == false) {mass[i]=0;}
    }
 
    F.open("output.txt", ios::out);
    for(int i=0;i<n;i++)
    {
        F<<mass[i]<<" ";
    }
    F<<endl;
    F.close();
 
    return 0;
}
Жду ваши предложения по оптимизации!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru