Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
1

Поиск n максимумов в матрице (снова)

18.05.2016, 22:22. Просмотров 488. Ответов 3
Метки нет (Все метки)

Необходимо завести пустой временный массив. В цикле идти по элементам матрицы. Если очередной элемент больше, чем самый маленький из временного массива, то добавляем его во временный массив. Если во временном массиве стало n+1 элементов, то самый маленький удаляется, чтобы снова стало n элементов. В конце вывести этот массив.
Сам принцип понятен, но реализовать в коде мозгов не хватает. Помогите)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2016, 22:22
Ответы с готовыми решениями:

Нахождение максимумов и минимумов в матрице
Доброго времени суток! подскажите пожалуйста! есть матрица и 2-х столбцов и множества строк. Как...

Поиск максимумов
Привет!!! У меня вопрос. У меня есть прога, которая сохраняет в текстовый фаил типа F= 2.256 ...

Поиск двух максимумов
В массиве записана информация о стоимости 30 видов товара. Определить стоимость двух самых дорогих...

Снова ошибка в матрице
После создания матрицы выдает ошибку "Формы этих значений должны совпадать. Это значение имеет...

3
318 / 304 / 206
Регистрация: 14.09.2015
Сообщений: 827
18.05.2016, 22:36 2
Alemano, если, как Вы говорите
Цитата Сообщение от Alemano Посмотреть сообщение
Сам принцип понятен
то при наличии вот такой матрицы
Java
1
2
3
4
5
6
     0     0     0     0     0     0
     1     1     1     1     1     1
     2     4     8    16    32    64
     3     9    27    81   243   729
     4    16    64   256  1024  4096
     5    25   125   625  3125 15625
какой массив должен получиться на выходе?
0
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 25
24.05.2016, 20:05  [ТС] 3
HOBATOP, Смотря сколько максимумов нужно. Если ввести число элементов матрицы, то нужно все их вывести. Если ввести например 10, то последние 10 максимальных элементов.

У меня получился вот такой код, но он не делает, то, что мне нужно. И я в тупике.

Java
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
63
64
65
66
67
68
69
70
71
72
public class Main {
 
    public static void main(String[] args) {
 
        int[][] matrix;
        matrix = new int[5][5];
        Scanner sc = new Scanner(System.in);
 
        System.out.print("Введите кол-во максимумов: ");
        int n = sc.nextInt();
        int[] maxs;
        maxs = new int[n];
 
        for (int i = 0; i < n; i++) {
            maxs[i] = 0;
        }
 
 
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = (int) (Math.random() * 10);
            }
        }
        int y = 0;
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (y < n) {
                    maxs[y] = matrix[i][j];
                    y++;
                }
                System.out.print(matrix[i][j] + "\t");
            }
            System.out.println();
        }
        for (y = 0; y < n - 1; y++)              //сортируем пузырьком первые n элементов матрицы
            for (int u = y + 1; u < n; u++) {
                if (maxs[y] > maxs[u]) {
                    int c = maxs[u];
                    maxs[u] = maxs[y];
                    maxs[y] = c;
                }
            }
 
        for (int i = 2; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) { //начиная со второй строки свряем элементы матрицы с элементами временного массива
                for (int s = 0; s < n; s++) {
                    if (maxs[s] <= matrix[i][j])
                    {
                        for (int m = 0; m < n; m++) {
                            if (maxs[m] >= matrix[i][j]) {
                                for (int k = 0; k < m; k++) {
                                    maxs[k] = maxs[k + 1]; //сдвигаем элементы
 
                                }
                                maxs[m] = matrix[i][j];
                                break;
                            }
 
                        }
                    }
                    break;
                }
 
            }
        }
        System.out.println();
        for (int i = 0; i < n; i++)
        {
            System.out.print(maxs[i] + " ");
        }
    }
}
0
318 / 304 / 206
Регистрация: 14.09.2015
Сообщений: 827
24.05.2016, 21:18 4
Alemano, смотрите: я Вас внятно спросил
Цитата Сообщение от HOBATOP Посмотреть сообщение
какой массив должен получиться на выходе?
а Вы мне кучу кода на разбор предлагаете, который к тому же
Цитата Сообщение от Alemano Посмотреть сообщение
делает, то, что мне нужно
Я так и не понял, что должно получиться, значит и сказать что не так точно не смогу... Увы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2016, 21:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Массив. Поиск локальный максимумов
Посодействуйте пожалуйста в написании программы на Pascal. Задание: В массиве A(n) найти и...

Поиск и сравнение максимумов. Bash
Здравствуйте. Появился следующий вопрос. Допустим, есть файл log.txt, вида Pack date: elapsed...

Поиск двух максимумов в скользящем окне
Здравствуйте. Задача следующая: дана матрица с данными, необходимо воспользовавшись скользящим...

Двумерные массивы. Поиск максимумов в столбцах
Напишите пожалуйста функцию, которая будет считать максимум для одного из столбцов прямоугольной...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.