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

Минимальный элемент, повторяющийся максимальное количество раз в массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переделать программу под двусвязный список http://www.cyberforum.ru/cpp-beginners/thread1207453.html
Написал программу кое-как на односвязный список, ибо тема эта для меня самая труднопонимаемая. Нужно переделать эту программу на двусвязный список. Как это сделать - не знаю. Буду рад, если хотя бы...
C++ Строки в стиле С Здравствуйте, задумался над одной штукой: можно ли просто написать char* s = "stirng"; или же нужно const char* s = "string"; я имею ввиду: если выбрать первый вариант, есть ли вероятность что... http://www.cyberforum.ru/cpp-beginners/thread1207430.html
Найти max среди элементов, лежащих ниже побочной, и min среди элементов, лежащих выше главной диагонали C++
В матрице размером NхM найти максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше главной диагонали. Помогите пожалуйста решить.
C++ Сумма чисел в одномерном массиве
Дана последовательность из не менее двух натуральных чисел, за которым следует 0. Вычислить сумму тех из них, порядковые номера которых простые числа.
C++ Определить можно ли закрыв какие-либо 3 дороги системы, добиться того, чтобы нельзы было попасть в город http://www.cyberforum.ru/cpp-beginners/thread1207419.html
По системе двусторонних дорог, определить можно ли закрыв какие-либо 3 из них, добиться того, чтобы из города А нельзя было попасть в город Б. вот собственно код #include "stdafx.h" #include...
C++ Для заданных значений аргумента Х вычислить значения суммы S и функции Z Для заданных значений аргумента Х вычислить значения суммы S и функции Z. Вычисление S произвести с точностью E. http://www.cyberforum.ru/attachments/410790d1402682095 подробнее

Показать сообщение отдельно
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 1
14.06.2014, 09:18
Если если возможность использовать сортировку, то алгоритм такой:
1) Отсортируем массив по возрастанию;
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
32
33
34
35
36
37
38
39
40
#include <algorithm>
#include <iostream>
using namespace std;
 
int main() {
    int a[10000];
    int n;
    
    cin >> n;
    for( int i = 0; i < n; ++i ) {
        cin >> a[i];
    }
    
    sort(a, a+n);
    int aMin = a[0];
    
    int maxRepeat = 1;
    int maxValue = aMin;
    
    int currRepeat = 1;
    int currValue = 0;
 
    for( int i = 1; i < n; ++i ) {
        if( a[i] == a[i-1] ) {
            currValue = a[i];
            ++currRepeat;
        } else {
            currRepeat = 1;
        }
        
        if( currRepeat > maxRepeat ) {
            maxRepeat = currRepeat;
            maxValue = currValue;
        }
    }    
 
    cout << maxValue << endl;
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru