Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 09.02.2018
Сообщений: 140

Определить k количество “особых” элементов матрицы

18.03.2018, 20:06. Показов 980. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дана целочисленная матрица размером N. Определить k–количество “особых” элементов матрицы, считая элемент “особым”, если в его строке слева от него находятся элементы, меньшие его, а справа – большие.


ПИСАТЬ НА ЯЗЫКЕ PHP (одномерный массив***)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import java.util.*;
import java.security.SecureRandom;
 
/**
 * Задача поиска специальных элементов в строке матрицы. Специальными являются элементы строки,
 * которые больше любого элемента, расположенного слева от себя и меньше любого элемента,
 * расположенного справа.
 */
public class SpecialElements {
    // Матрица.
    private byte [][] matrix;
 
    /**
     * Конструктор, создающий новую матрицу заданных размеров.
     * @param width ширина матрицы.
     * @param height высота матрицы.
     */
    public SpecialElements(int width, int height) {
        matrix = new byte[height][width];
        SecureRandom random = new SecureRandom();
        for (byte[] row : matrix)
            random.nextBytes(row);
    }
 
    /**
     * Производит поиск специальных элементов и возвращает их.
     * @return ассоциативный массив, ключами которого являются номера строк, в которых найдены
     * специальные элементы, значениями - множество этих элементов.
     */
    public TreeMap<Integer, Set<Byte>> specialElements() {
        TreeMap<Integer, Set <Byte>> result = new TreeMap<Integer, Set<Byte>>();
        Set<Byte> elements;
        byte temp = 0;
        for (int r = 0; r < matrix.length; r++) {
            byte[] row = matrix[r];
            elements = new HashSet<Byte>();
            // Идем слева направо и добавляем во множество элементы, большие тех, что слева от них.
            for(byte element : row) {
                if(element > temp) {
                    elements.add(element);
                    temp = element;
                }
            }
            // Идем справа налево и удаляем из множества элементы, большие тех, что справа от них.
            for(int i = row.length - 1; i >= 0; i--) {
                byte element = row[i];
                if(element > temp)
                    elements.remove(element);
                else
                    temp = element;
            }
            // Сохраняем результат при наличии хотя бы одного специального элемента в строке.
            if(elements.size() > 0)
                result.put(r, elements);
            temp = 0;
        }
        return result;
    }
 
    /**
     * Производит поиск специальных элементов и возвращает их количество.
     * @return количество специальных элементов.
     */
    public int specialElementsCount() {
        int result = 0;
        Set<Byte> elements = new HashSet<Byte>();
        byte temp = 0;
        for(byte[] row : matrix) {
            // Идем слева направо и добавляем во множество элементы, большие тех, что слева от них.
            for(byte element : row) {
                if(element > temp) {
                    elements.add(element);
                    temp = element;
                }
            }
            // Идем справа налево и удаляем из множества элементы, большие тех, что справа от них.
            for(int i = row.length - 1; i >= 0; i--) {
                byte element = row[i];
                if(element > temp)
                    elements.remove(element);
                else
                    temp = element;
            }
            // Добавляем к результату количество элементов, найденных в строке.
            result += elements.size();
            elements.clear();
            temp = 0;
        }
        return result;
    }
 
    /**
     * Возвращает строковое представление матрицы этого объекта.
     * @return строковое представление матрицы.
     */
    @Override
    public String toString() {
        StringBuffer result = new StringBuffer(matrix.length * matrix[0].length * 6);
        StringBuffer buffer;
        for (byte[] row : matrix) {
            for (byte element : row) {
                buffer = new StringBuffer(5);
                buffer.append(element);
                while(buffer.length() != 5)
                    buffer.insert(0, " ");
                result.append(buffer);
            }
            result.append("\n");
        }
        return result.toString();
    }
 
    /**
     * Испытания на прочность.
     * @param args аргументы командной строки.
     */
    public static void main(String[] args) {
        SpecialElements task = new SpecialElements(100, 100);
        System.out.println("Matrix:");
        System.out.println(task.toString());
        int count = 0;
        System.out.println("Answer: ");
        for (Map.Entry<Integer,Set<Byte>> entry : task.specialElements().entrySet()) {
            System.out.println("Row #" + entry.getKey() + ":   " + entry.getValue().toString());
            count += entry.getValue().size();
        }
        System.out.println(count + " element(s) found.");
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2018, 20:06
Ответы с готовыми решениями:

Задан массив. Определить k – количество “особых” элементов массива, считая элемент “особым”, если слева от него
Задан массив. Определить k – количество “особых” элементов массива, считая элемент “особым”, если слева от него находятся элементы,...

Найти количество “особых” элементов массива
найти result (количество “особых” элементов массива) . элемент является “особым”, если слева от него находятся элементы, меньшие его, а...

Определить количество «особых» элементов матрицы
Даны натуральные числа n и m, целочисленная матрица d(n х m). Определить количество «особых» элементов матрицы, считая элемент «особым»,...

2
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
18.03.2018, 20:20
Цитата Сообщение от sisi11 Посмотреть сообщение
ПИСАТЬ НА ЯЗЫКЕ PHP
наверное ты разделом ошибся, либо я чего-то не знаю
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
18.03.2018, 22:26
Нужно написать на PHP, пример на Java и всё это в разделе C++... В этой есть какой-то скрытый смысл?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2018, 22:26
Помогаю со студенческими работами здесь

Определить k – количество “особых” элементов матрицы
Здравствуйте. помогите пожалуйста реализовать код назадачу следующую: На форуме нашел данную задачу, но с &quot;другим&quot;...

Определить количество «особых» элементов матрицы
Всем привет. Тут вот задачка на динамический двумерный массив : Задана матрица размером NxM. Определить количество «особых»...

Определить количество «особых» элементов матрицы
Здравствуйте. Есть такое задание: Задана матрица размером N строк и M столбцов. Определить количество «особых» элементов матрицы,...

Определить количество «особых» элементов матрицы
Добрый день! Помогите написать программу: Задана матрица размером NxM. Определить количество «особых» элементов матрицы, считая элемент...

Определить k – количество “особых” элементов матрицы
Задана матрица размером NxM. Определить k – количество “особых” элементов матрицы, считая элемент “особым”, если он больше суммы остальных...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru