С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Permament
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 6
#1

Найти первые пять самых повторяющихся элементов массива и количество их вхождений - C++

03.10.2011, 12:27. Просмотров 877. Ответов 5
Метки нет (Все метки)

Есть отсортированный по возрастанию массив. Надо найти первые пять самые повторяющиеся и их кол-во вхождений.

Например
1111111222222333334444555667
Ответ будет
1 2 3 4 5

Как реализовать данный алгоритм?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 12:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти первые пять самых повторяющихся элементов массива и количество их вхождений (C++):

Отсортировать первые пять элементов массива по возрастанию, последние пять по убыванию - C++
Введем 11 чисел, число по середине должна остаться, а первые пять по возрастанию, последние пять по убыванию. Вот мой код: #include...

Найти самое большое количество повторяющихся элементов и заменить первые 2 буквы - C++
пользователь вводит строку и надо в ней найти максимальное количество символов подряд, которые повторяются хотя бы дважды к примеру,...

Определить количество повторяющихся элементов для каждого массива - C++
Помогите пожалуйста) заранее спасибо Задать целочисленные двузначные массивы А = {ai i = 0, 1,..., 25}, B = {bjj = 0, 1, … 33}, ...

Найти количество не повторяющихся элементов в массиве - C++
Знаю что условие в цикле не то, но больше в голову нечего не лезет. У кого идеи есть? #include <iostream> #include <conio.h> using...

В целочисленном массиве найти количество повторяющихся элементов - C++
В целочисленном массиве нужно найти количество повторяющихся элементов. Как это сделать кто-то может подсказать?

Найти самых больших элементов массива, являющихся простыми числами - C++
Помогите пожалуйста написать программы: 2)Дан массив из 15 элементов, найти 3 самых больших элементов массива, являющихся простыми...

5
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
03.10.2011, 14:49 #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
#include <string>
#include <iostream>
#include <map>
#include <algorithm>
 
using namespace std;
 
int main()
{
   const char s[]="2222223333311111114444555667";
   map<char, int> cnt;
   
   for(const char *p = s; *p; ++p)
   {
      cnt[*p]++;   
   }
   
   vector<pair<char, int> > v(cnt.begin(), cnt.end());
   
   sort(v.begin(), v.end(), 
      [](const std::pair<char, int>& e1, const std::pair<char, int>& e2)
      {
         return e1.second > e2.second;
      }
   );
   
   for(size_t i = 0; i < 5 && i < v.size(); i++)
   {
      cout<<v[i].first<<": "<<v[i].second << endl;
   }
}
Добавлено через 1 минуту
Компилилось здесь: http://liveworkspace.org
1
soft.creator
104 / 104 / 4
Регистрация: 17.10.2010
Сообщений: 283
03.10.2011, 18:45 #3
C++
1
2
3
4
      [](const std::pair<char, int>& e1, const std::pair<char, int>& e2)
      {
         return e1.second > e2.second;
      }
Интересный способ задания лямбда-функции. В С++ [] имеют еще какой-то особый смысл?
P.S. Светлая память студенту, который будет это сдавать ))
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
03.10.2011, 18:46 #4
soft.creator, да, стандарт 0x.
1
Permament
0 / 0 / 0
Регистрация: 02.10.2011
Сообщений: 6
03.10.2011, 19:01  [ТС] #5
Цитата Сообщение от gooseim Посмотреть сообщение
C++
1
   map<char, int> cnt;
Что это за контейнер?

Цитата Сообщение от gooseim Посмотреть сообщение
C++
1
std::pair<char, int>& e1, const std::pair<char, int>& e2)
что делает std:air?
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
03.10.2011, 20:20 #6
Цитата Сообщение от Permament Посмотреть сообщение
Что это за контейнер?
Контейнер map, как ни странно. Ещё называют "словарь". Отображает множество значений на множество ключей, таким образом, можно эффективно найти значение по ключу (не забываем, что и ключи, и значения могут быть не только простыми типами, но и пользовательскими, например, можно отобразить множество значений типа std::vector на множество ключей типа std::string).

Цитата Сообщение от Permament Посмотреть сообщение
что делает std:: pair?
Стандартный класс, имеет только два поля - first и second, к которым можно обращаться непосредственно.
2
03.10.2011, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 20:20
Привет! Вот еще темы с ответами:

Найти число повторяющихся элементов массива - C++
Здравствуйте, уважаемые знатоки IT-программировании! Помогите мне решить эту задачу: &quot;Дан массив А(20). Нужно найти число повторяющихся...

Найти максимальный из повторяющихся элементов двумерного массива - C++
Есть три задачи, не могу разобраться, хоть убей. Буду крайне признателен если поможете. Заранее огромное спасибо. 1) Найти максимальный...

Найти минимальный из повторяющихся элементов одномерного массива - C++
Найти минимальный из повторяющихся элементов одномерного массива.

Пять самых длинных слов - C++
Дана строка слов разделенных пробелами, запятыми, точками. Сформируйте новую строчку из пяти самых длинных слов. #include &lt;iostream&gt;...


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

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

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