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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора ввода вывода http://www.cyberforum.ru/cpp-beginners/thread850615.html
Есть два хэдера(header.h и Array.h) и исполняемая программа main.cpp в которой я как раз и обращаюсь к оператору ввода Array.h #pragma once #include <iostream> #include "header.h" class Array:...
C++ Эти треугольники являются подобными числа a и b выражают длинны катетов одного прямоугольного треугольника,с и d - другого. Эти треугольники являются подобными. помогите в этих программах я 0 http://www.cyberforum.ru/cpp-beginners/thread850614.html
C++ Использование LAPACK на c++
Здравствуйте! Помогите разобраться с установкой LAPACk на проект c++. Нужно реализовать алгоритмы разложений матриц. Подкиньте рабочий проект, а я уж сам потом разберусь Заранее спасибо
Передача массива в функцию по ссылке C++
Здравствуйте. Есть функция: void f(int &a) { int *p=&a; p=1; } Но почему-то при попытке передать ей массив ругается дебаггер: ...|10|error: invalid initialization of non-const...
C++ Структура в стеке http://www.cyberforum.ru/cpp-beginners/thread850572.html
Я наверное уже всех задолбал со своим стеком, но всё же мне еще нужна помощь)) Код, который ниже должен запрашивать у пользователя ввод структуры, которая после помещается в стеке. Так же программа...
C++ Работа с указателями Расскажите как работает каждая строка в коде char *A = "123456789"; unsigned B = 1; char *X = A + B; char *Y = A - (- B); подробнее

Показать сообщение отдельно
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
05.05.2013, 00:56
Цитата Сообщение от Туся111 Посмотреть сообщение
максимальный из элементов встречающийся в матрице более 1 раза
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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <map>
 
using namespace std;
 
typedef vector<int> row_t;
typedef vector<row_t> matrix_t;
 
bool find_max_dup(const matrix_t & matrix, int & max_dup)
{
    // count each value in the matrix
    typedef map<int, int> map_t;
    map_t count;
    for (const auto & row : matrix) {
        for (auto elem : row) {
            count[elem]++;
        }
    }
    // find duplicate with maximum value
    typedef map_t::value_type val_t;
    auto comp = [] (val_t v0, val_t v1) -> bool {
        return (v0.second <= 1) ||
               (v1.second > 1 && v0.first < v1.first);
    };
    map_t::const_iterator iter = max_element(count.begin(),
                                             count.end(),
                                             comp);
    max_dup = iter->first;
    return iter->second > 1;
}
 
int main()
{
    // read matrix from file
    ifstream inp("input.txt");
    int n, m;
    inp >> n >> m;
    matrix_t matrix(n, row_t(m));
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            inp >> matrix[i][j];
        }
    }
    // print matrix
    for (const auto & row : matrix) {
        for (auto elem : row) {
            cout << setw(5) << elem;
        }
        cout << endl;
    }
    // find maximum among duplicates
    int max_dup;
    if (!find_max_dup(matrix, max_dup)) {
        cout << "No duplicates!" << endl;
    } else {
        cout << "Maximum duplicate: " << max_dup << endl;
    }
}
Цитата Сообщение от input.txt
5 5
0 1 0 1 0
1 0 2 0 0
0 0 3 0 1
0 1 4 0 3
0 0 5 0 0
Цитата Сообщение от stdout
0 1 0 1 0
1 0 2 0 0
0 0 3 0 1
0 1 4 0 3
0 0 5 0 0
Maximum duplicate: 3
Добавлено через 4 часа 45 минут
Концовку функции find_max_dup можно немного упростить, учитывая что в std::map все хранится в сортированном виде:
C++
1
2
3
4
5
6
7
    // find duplicate with maximum value
    auto iter = find_if(count.rbegin(), count.rend(),
                        [] (map_t::value_type v) { return v.second > 1; });
    if (iter == count.rend())
        return false;
    max_dup = iter->first;
    return true;
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru