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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 15:54     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #1
Дана целочисленная матрица M x N. Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов.
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
#include <iostream.h>
#define n 10
#define m 10
#include <stdlib.h>
void main ()
{
    int a[n][m],b[m],i,j;
    for(i=0; i<n; i++)
    for(j=0; j<m; j++)
        a[i][j]=rand()%9-1;
        for(i=0; i<n; i++)
    for(j=0; j<m; j++)
        cout<<a[i][j]<<"  "<<'\t';
     cout<<endl;
        for(i=0; i<n; i++)
{   
        for(j=0; j<m; j++)
        b[a[i][j]]+=1;}
    for(i=0; i<10; i++)
    {
        for(j=0; j<m; j++)
        if(b[i]>0)
            cout<<i<<"  "<<"count"<<"  "<<b[i]<<endl;}
}
Помогите...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 15:54     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов.
Посмотрите здесь:

C++ дана целочисленная матрица размера М*N.найти номер последней из строк,содержащих только четные числа
Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих только четные числа C++
C++ Найти номер последней из строк матрицы, содержащих только четные числа.
2) Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов C++
Найти номер первого из ее столбцов содержащих максимальное количество одинаковых элементов и вывести этот столбец вместе с номером C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 16:18     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #2
Уточняющий вопрос.
Как считать количество одинаковых элементов?

Если вопрос сложный, то сколько одинаковых элементов в следующих массивах?
1 2 2 = ?
1 2 1 2 = ?
1 1 2 1 2 = ?
1 2 1 2 1 2 = ?
1 2 3 2 3 = ?
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:22  [ТС]     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #3
Мне преподаватель сказал что бы вот так сделал
C++
1
2
3
4
5
6
7
8
9
10
11
# include <iostream.h>
# define HB 8
void main ()
{
    int a[HB]={3,7,2,3,7,5,9,3},i;
    int b[10]={0,0,0,0,0,0,0,0};
    for(i=0; i<HB; i++)
        b[a[i]]+=1;
    for(i=0; i<10; i++)
        if(b[i]>0)
            cout<<i<<"  "<<"count"<<"  "<<b[i]<<endl;}
только с матрицей.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 16:32     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #4
Это будет вообще не то же самое, что в описанном задании.

Если нужно (как по тексту задания) найти строку с максимальным "количеством одинаковых элементов", то необходимо знать, как вычислить "количество одинаковых элементов" для любой строки. Чисто чтобы было, что сравнивать.
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:34  [ТС]     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #5
я просто новичок , и много чего не понимаю толком. ТОлько образно знаю что как, но не могу делать.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 16:45     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #6
Просто образно ответь на вопрос, сколько одинаковых чисел в каждой из нижеприведенных строк и как ты их считал.
1 2 2 = ?
1 2 1 2 = ?
1 1 2 1 2 = ?
1 2 1 2 1 2 = ?
1 2 3 2 3 = ?
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:49  [ТС]     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #7
1) две двойки
2) две однёрки, две двойки
3) три однёрки , две двойки
4)три однёрки, три двойки
5)две двойки , две тройки
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 16:53     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #8
Характеризуйте, пожалуйста, количество одинаковых чисел в каждой строке одним и только одним числом.
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 16:56  [ТС]     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #9
извените я не могу понять
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
11.11.2011, 17:10     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #10
Судя по коду в посте #3 (в котором, кстати, выход за пределы массива), для каждого элемента считается число вхождений (и подразумевается, что диапазон значений ограничен отрезком [0, N-1], где N - это длина строки), а число одинаковых элементов - это количество значений в результирующем массиве вхождений, которые больше единицы (т.е. количество значений в строке матрицы, которые повторяются более одного раза)
Получаем:
  1. 1
  2. 2
  3. 2
  4. 2
  5. 2
Хотя могу и ошибаться
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 17:23     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #11
Цитата Сообщение от ramsey Посмотреть сообщение
извените я не могу понять
Тут какая штука. Нужен критерий, чтобы сравнивать, что больше -- "две однёрки, две двойки" или "две двойки , две тройки" или "одна двойка, три тройки", а может даже "четверка нулей". Вот с этим бы надо бы определиться.


Моим best guess было бы суммирование значения счетчиков вхождения, отличных от единицы.
1. 2
2. 4
3. 5
4. 6
5. 4

Альтернативно -- максимальное значение среди счетчиков вхождений.
1. 2
2. 2
3. 3
4. 3
5. 2
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 17:25  [ТС]     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #12
извените но для меня это тяжело
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 17:42     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #13
зайдем с другого боку. Применим реверс-инжиниринг.
Какие из этих строк содержат максимальное количество одинаковых элементов?
1 2 2 = ?
1 2 1 2 = ?
1 1 2 1 2 = ?
1 2 1 2 1 2 = ?
1 2 3 2 3 = ?
ramsey
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 47
11.11.2011, 17:47  [ТС]     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #14
4 строка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 18:30     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов.
Еще ссылки по теме:

C++ Дана целочисленная матрица. Найти номер первого из ее столбцов, содержащих минимальное количество одинаковых элементов
C++ Найти номер последней из строк, содержащих хотя бы один ненулевой элемент
C++ Дан целочисленный массив размера N. Найти максимальное количество его одинаковых элементов

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

Или воспользуйтесь поиском по форуму:
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.11.2011, 18:30     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов. #15
Теперь, будьте любезны, расскажите, как вы это выяснили. Почему не третья?

Добавлено через 4 минуты
Оукей, теперь будем уточнять.

Тот же вопрос среди следующих строк.
2 1 1 2 2 1
1 2 1 2 1 2
2 2 2 2 1 1

Добавлено через 25 минут
Вот то, что непонятно образно делает то, что ты непонятно образно описал.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int countSames(int *array, int width) {
  int i;
  int *counters = (int*)malloc(width * sizeof(int));
  // можно функцией memset
  for (i = 0; i < width; ++i) counters[i] = 0;
  for (i = 0; i < width; ++i) ++counters[array[i]];
 
  int result = 0;
  for (i = 0; i < width; ++i)
    if (counters[i] > 1)
      result += counters[i];
 
  free(counters);
  return result;
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
  int height = 7 + rand() % 5;
  int width = 7 + rand() % 5;
  
  int i, j;
  int **matrix = (int **)malloc(height * sizeof(int*));
  
  for (i = 0; i < height; ++i) {
    matrix[i] = (int *)malloc(width *sizeof(int));
    printf("Row %3d:", i + 1);
    for (j = 0; j < width; ++j)
      printf("%3d", matrix[i][j] = rand() % width);
    int same = countSames(matrix[i], width);
    printf(" | %3d same", same);
    printf("\n");
  }
 
  int maxSameRowId = 0;
  int maxSameRowValue = countSames(matrix[maxSameRowId], width);
  for (i = 1; i < height; ++i) {
    int same = countSames(matrix[i], width);
    if (same >= maxSameRowValue) {
      maxSameRowId = i;
      maxSameRowValue = same;
    }
  }
 
  printf("\nMaximum same numbers %d are in row number %d\n",
    maxSameRowValue, maxSameRowId + 1);
 
  for (i = 0; i < height; ++i)
    free(matrix[i]);
  free(matrix);
 
  return 0;
}
Yandex
Объявления
11.11.2011, 18:30     Найти номер последней из ее строк,содержащих максимальное количество одинаковых элементов.
Ответ Создать тему
Опции темы

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