Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2016, 23:56   #1
Saruman!
Пользователь
 
Регистрация: 17.10.2016
Сообщений: 11
По умолчанию Оптимизация кода

#include <iostream>
using namespace std;

int main()
{
int n,m;
cin >> n >> m;
int A[n][m];

for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin >> A[i][j];


int i=1;
int z;
int j = 0;
bool p = false;
bool q = true;
while(i<n)
{
int k=0;
while(j<m && k<m && !p)
{
if(A[0][j] == A[i][k])
{
p = true;
z = A[i][k];
}
else
k++;
}
if(p)
i++;
else
j++;

q = p;
}
if(q)
cout << z;
}

Вывод программы будет число,повторяющаяся во всех строках матрицы.

Как сократить действия программы?
Saruman! вне форума Ответить с цитированием
Старый 22.10.2016, 00:06   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Программа не рабочая (у меня ошибки выдаёт).

4.jpg
ura_111 вне форума Ответить с цитированием
Старый 22.10.2016, 00:19   #3
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
std::set<int> good_numbers;
for(int i = 0; i< m;i++){
    good_numbers.insert(A[0][i]);
}
std::set<int> temp;
for(int i = 1; i<n-1;i++){
    for(int j = 0; j< m; j++){
        if(good_numbers.find(A[i][j])!=good_numbers.end())
            temp.insert(A[i][j]);
    }
    for(auto iter = good_numbers.begin(); iter!=good_numbers.end(); ++iter){
        while(iter!=good_numbers.end() && temp.find(*iter)==temp.end())
            iter = good_numbers.erase(iter);
    }
    temp.clear();
}
for(int j = 0; j<m;j++){
    if(good_numbers.find(A[n-1][j])!=good_numbers.end()){
            std::cout<<A[n-1][j];
            return;
    }
}
std::cout<<"Nothing found\n";
Если пишешь на C++11, то можно использовать unordered_set. Тогда операций будет ещё меньше.
И да, поправь auto на std::set<int>::iterator, если ты на старом пишешь.
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 22.10.2016 в 00:31.
New man вне форума Ответить с цитированием
Старый 22.10.2016, 11:35   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
#include <iostream>
#include <map>
#include <algorithm>

using namespace std;

int main()
{
    int n,m;
    cin >> n >> m;
    int A[n][m];
    typedef map<int, size_t> MyMap;
    MyMap mm;

    for (auto &i : A) {
        for (auto &j : i) {
            cin >> j;
            ++mm[j];
        }
    }

    auto ret = max_element(mm.begin(), mm.end(),
            [](const MyMap::value_type &l, const MyMap::value_type &r)
            { return l.second < r.second; });

    cout << (ret == mm.end() ? "nothing" : to_string(ret->first)) << endl;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.10.2016, 11:50   #5
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Не, ну это не будет работать на массиве вроде такого:
1 1 2
1 1 2
1 1 2
4 5 2

Выведет 1, хотя правильно 2.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 22.10.2016, 12:23   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
Вывод программы будет число,повторяющаяся во всех строках матрицы.
а я так понял, что надо вывести самое повторяющееся число
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.10.2016, 14:55   #7
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Ну хз. У меня показывает то, что есть во всех строках.

Да и вообще, ТС исчез, так что ему мало нужно, похоже.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода OmegaBerkut C# (си шарп) 6 17.05.2016 16:05
Оптимизация кода LatuSerge Общие вопросы Delphi 10 27.12.2011 01:51
Оптимизация кода Shouldercannon Общие вопросы Delphi 23 22.07.2010 22:45
Оптимизация кода WoWan-SM Общие вопросы .NET 4 27.04.2010 11:33
Оптимизация кода Terran Общие вопросы Delphi 6 01.11.2008 16:57