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

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

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

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

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

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

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

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

Отсортировать первые пять элементов массива по возрастанию, последние пять по убыванию - 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++
Помогите пожалуйста написать программы: 2)Дан массив из 15 элементов, найти 3 самых больших элементов массива, являющихся простыми...

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

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

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

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

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

Найти 3 самых больших и 3 самых маленьких числа в двумерном массиве - C++
Дан двумерный массив размерностью m x n, нужно найти и вывести 3 самых больших и 3 самых маленьких числа во всем массиве. Заранее спасибо

Строки: найти первое из самых длинных и последнее из самых коротких слов и поменять их местами - C++
Помогите написать прогу) 1. Строка состоит не менее чем из двух слов. Преобразовать её по следующему правилу: найти первое из самых...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
soft.creator
103 / 103 / 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. Светлая память студенту, который будет это сдавать ))
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
03.10.2011, 18:46     Найти первые пять самых повторяющихся элементов массива и количество их вхождений #4
soft.creator, да, стандарт 0x.
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?
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.10.2011, 20:20     Найти первые пять самых повторяющихся элементов массива и количество их вхождений #6
Цитата Сообщение от Permament Посмотреть сообщение
Что это за контейнер?
Контейнер map, как ни странно. Ещё называют "словарь". Отображает множество значений на множество ключей, таким образом, можно эффективно найти значение по ключу (не забываем, что и ключи, и значения могут быть не только простыми типами, но и пользовательскими, например, можно отобразить множество значений типа std::vector на множество ключей типа std::string).

Цитата Сообщение от Permament Посмотреть сообщение
что делает std:: pair?
Стандартный класс, имеет только два поля - first и second, к которым можно обращаться непосредственно.
Yandex
Объявления
03.10.2011, 20:20     Найти первые пять самых повторяющихся элементов массива и количество их вхождений
Ответ Создать тему
Опции темы

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