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

Подскажите, пожалуйста, как можно оптимизировать код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Распараллеливание потоков для нахождения суммы матрицы <omp.h> http://www.cyberforum.ru/cpp-beginners/thread990657.html
Доброго дня. Сегодня слушал занимательную лекцию об распараллеливание потоков и получил задание: есть матрица 10,10 инициализированная рандомными числами -> сделать параллельные потоки для нахождения сумы. Пробовал так: #include "stdafx.h" #include <iostream> #include <omp.h> #include <stdlib.h> using namespace std;
C++ Найти координаты числа в бесконечной спирали из чисел Дана бесконечная во все стороны спираль из чисел, в центре которой - единица, нужно найти координаты числа по самому числу. (Прикрепил) В общем-то идея только одна, строить спираль в массиве Знаю, что должна быть формула. http://www.cyberforum.ru/cpp-beginners/thread990640.html
Написать программу, организующую заполнение целого массива из n элементов случайными значениями C++
Написать программу, организующую заполнение целого массива из n элементов случайными значениями (n – целая переменная) и корректный вывод массива.
Компрессия данных C++
Я хочу написать программу (что-то наподобие FreeARC) которая хорошо сжимает данные. Помогите мне подобрать алгоритмы компрессии для текстовой информации и картинок (всех типов), самое главное чтобы после обработки данные имели минимально возможный размер и по возможности бистро розархивировались. Также буду благодарен за предоставление исходных кодов этих (компрессорных) алгоритмов и их...
C++ Определить численную характеристику массива http://www.cyberforum.ru/cpp-beginners/thread990619.html
– Создать масив заданым способом; – определить численную характеристику; – сформировать новый масив на основе созданого Объясните суть работы! Раньше не изучал программирование, поэтому ничего не могу понять! Что нужно сделать? напишите тезисно
C++ Ошибка при вводе двумерного массива Здравствуйте! Нужно: 1. Написать программу с использованием двумерного массива для сохраниния данных о месячных продажах книжек (количество книжек, не деньги) за 3 года. 2. Требуется выдать общую сумму (к-во книжек) продаж за каждый год и за все годы вместе. Последнего я не сделал да и программа выдает ошибку под конец ввода. Вот сама программа #include <iostream> подробнее

Показать сообщение отдельно
ram2303
Сообщений: n/a
28.10.2013, 17:32     Подскажите, пожалуйста, как можно оптимизировать код
Здравствуйте, уже второй день мучаюсь с одной программой. Сегодня получилось ее дописать, но сайт не принимает, ссылаясь на превышение максимального времени работы. Помогите, пожалуйста, оптимизировать мой код. Программирую
всего второй месяц, пытался сам поколдовать над кодом, но все никак не выходит...

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

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

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

Даны количество шариков в цепочке (не более 1000) и цвета шариков (от 0 до 9, каждому цвету соответствует свое целое число).

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

Требуется вывести количество шариков, которое будет уничтожено.

Ограничение по времени, сек - 4
Ограничение по памяти, мегабайт - 64

Примеры
Ввод:
5 1 3 3 3 2
Вывод:
3

Ввод:
10 3 3 2 1 1 1 2 2 3 3
Вывод:
10
Мой код:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
 
int main () {
   int n,i,s,b,w=1,ans=0;
   cin >> n;
 
   int a[n];
 
   for (i=0; i<n; i++) {
 
   cin >> a[i];
 
   }
 
 
 
 
 
                     do {
                   
 
                       s=2;
                       
 
   for (i=1; i<n-w; i++) {
 
   
   if (a[i]==a[i-1] && a[i]==a[i+1] && s==2) {b=i-1;}
   if (a[i]==a[i-1] && a[i]==a[i+1]) {s=s+1;}
  
   else if (s>2) {break;}
 
   }  
 
 
 
   if (s!=2) {
 
   for (i=b; i<b+s; i++) {
 
   a[i]=-1;
 
   }
 
 
 
   for (i=0; i<n-s; i++) {
 
 
   if (a[i]==-1) { swap (a[i],a[i+s]);}
 
 
   }
 
 
                 }
             
 
 
           if (s!=2) {w=s+1; ans=ans+s;}
                  
           
            } while (s!=2);
                   
                   
 
 
   cout << ans;      
     
 
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru