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

Разбор задачи на построение массивов - C++

Восстановить пароль Регистрация
 
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
02.04.2014, 17:53     Разбор задачи на построение массивов #1
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Побеждает спортсмен, у которого максимален наилучший бросок. Если таких несколько, то из них побеждает тот, у которого наилучшая сумма результатов по всем попыткам. Если и таких несколько, победителем считается спортсмен с минимальным номером. Определите номер победителя соревнований.
Формат входных данных

Программа получает на вход два числа n и m, являющиеся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по m чисел, являющихся элементами массива.

Формат выходных данных

Программа должна вывести одно число - номер победителя соревнований. Не забудьте, что строки (спортсмены) нумеруются с 0.

Ввод : 4 3
8 8 8
5 9 3
9 4 7
6 6 2
Вывод:2.

Я много раз пробовал, но путался в коде =\
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 17:53     Разбор задачи на построение массивов
Посмотрите здесь:

C++ [c++]Составить программу обработки одномерных массивов. На основе массивов А(4) и В(4) сформировать третий С(8)
C++ Разбор массивов/контейнеров
C++ Помогите составить программу транспортной задачи.Построение опорного плана перевозок методом минимального элемента.
C++ Сравнение массивов: найти максимальное перебором массивов
C++ Две задачи на тему "Организация и обработка массивов данных"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tron737
8 / 8 / 4
Регистрация: 29.12.2013
Сообщений: 27
02.04.2014, 18:33     Разбор задачи на построение массивов #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
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
{
    int a[100][100], n, m, max = 0,maxx = 0, imax, imaxx;
    cin >> n >> m;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (max < a[i][j])
            {
                max = a[i][j];
                imax = i;
                break;
            }
            else if((i > imax) && (a[i][j] = max) && (maxx < a[i][j]))
            {
                maxx = a[i][j];
                imaxx = i + imax - 1;
            }
        }
    }
    cout << imaxx;
    system("pause");
}
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
03.04.2014, 10:57  [ТС]     Разбор задачи на построение массивов #3
К сожалению ресурс http://informatics.mccme.ru/mod/stat...hapterid=358#1
сказал что лишь 7 из 12 тестов были пройдены положительно. Может ли кто нибудь мне помочь разобраться, и составить такой код, чтобы он функционировал всегда правильно?

Добавлено через 15 часов 16 минут
Никто не против если Я подниму тему?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
03.04.2014, 11:40     Разбор задачи на построение массивов #4
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
#include <algorithm>
#include <iostream>
#include <numeric>
#include <utility>
#include <vector>
 
int main() {
 
  int n = 0;
  int m = 0;
 
  typedef std::vector<int> ResultsData;
  typedef std::pair<int, ResultsData> Results;
  
  std::cin >> n >> m;
  std::vector<Results> data( n );
  for( int i = 0; i < n; ++i ) {
    data[ i ] = std::make_pair( i, ResultsData( m ) );
  }
  
  for( int in = 0; in < n; ++in ) {
    for( int im = 0; im < m; ++im ) {
      std::cin >> data[ in ].second[ im ];
    }
  }
 
  static const auto max_pred = []( const Results& r1, const Results& r2 ) {
    const ResultsData& r1_data = r1.second;
    const ResultsData& r2_data = r2.second;
 
    auto r1_max = std::max_element( r1_data.cbegin(), r1_data.cend() );
    auto r2_max = std::max_element( r2_data.cbegin(), r2_data.cend() );
 
    if( *r1_max != *r2_max ) {
      return *r1_max < *r2_max;
    }
 
    auto r1_sum = std::accumulate( r1_data.cbegin(), r1_data.cend(), 0 );
    auto r2_sum = std::accumulate( r2_data.cbegin(), r2_data.cend(), 0 );
 
    if( r1_sum != r2_sum ) {
      return r1_sum < r2_sum;
    }
 
    return r1.first > r2.first;
  };
 
  std::cout << std::max_element( data.cbegin(), data.cend(), max_pred )->first;
  
  return 0;
}
kasadi
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 65
03.04.2014, 12:33  [ТС]     Разбор задачи на построение массивов #5
Потрясающий код!) Только вот для моего уровня это пока что слишком сложно. Как и для понимания, так и для учителя который зная мой уровень будет проверять код)
Yandex
Объявления
03.04.2014, 12:33     Разбор задачи на построение массивов
Ответ Создать тему
Опции темы

Текущее время: 00:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru