0 / 0 / 1
Регистрация: 21.11.2014
Сообщений: 49
1

Найти элементы матрицы, которые одновременно являются min в своей строке и max в своем столбце

10.12.2014, 23:31. Показов 2686. Ответов 6
Метки нет (Все метки)

Дан массив размера n × m, все элементы которого различны.
Необходимо найти такие элементы, которые одновременно являются
минимальными в своей строке и максимальными в своем столбце.
Также нужно вывести индексы этих элементов. Если в массиве нет
таких элементов, нужно вывести 0.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2014, 23:31
Ответы с готовыми решениями:

Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце
Дан массив размера n × m, все элементы которого различны. Необходимо найти такие элементы, которые...

Найти числа, которые являются одновременно максимальными в своем столбце и минимальными в своей строке
Нужна ваша помощь Console.Write("Введите кол-во строк для матрицы: "); ...

Найти элементы матрицы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце
В двумерном массиве размерностью n × m, все элементы которого различны, требуется найти такие...

Найти элементы матрицы, которые являются наименьшими в своей строке и наибольшими в своем столбце
В квадратной матрице нужно найти элементы (и запомнить их значения и координаты), которые являются...

6
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 7
11.12.2014, 00:06 2
массив Int или Double? вообще заменишь если что, должно быть приблизительно вот так
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
// mtrx - твой массив
            int min = mtrx[0,0];
            int max = mtrx[0,0];
            int i = 0;
            int j = 0;
            int indexMaxI = 0;
            int indexMinI = 0;
            int indexMaxJ = 0;
            int indexMinJ = 0;
            Dictionary<int,Point> elemnts = new Dictionary<int, Point>();
            for (int k = 0; k <= n; k++)
            {
                min = mtrx[i, 0];
                indexMinI = i;
                indexMinJ = 0;
                for (j = 0; j < m; j++)
                {
                    if (mtrx[i, j] <= min)
                    {
                        min = mtrx[i, j];
                        indexMinI = i;
                        indexMinJ = j;
                    }
                }
                j = indexMinJ;
                max = mtrx[0, j];
                indexMaxI = 0;
                indexMaxJ = j;
                for (i = 0; i < n; i++)
                {
                    if (mtrx[i, j] > max)
                    {
                        max = mtrx[i, j];
                        indexMaxI = i;
                        indexMaxJ = j;
                    }
                }
                if ((indexMinI==indexMaxI)&&(indexMinJ==indexMaxJ))
                {
                    elemnts.Add(mtrx[indexMinI,indexMinJ],new Point(indexMinI,indexMinJ));
                }
                i = k;
            }
по идее так не проверил, на скорую руку писал, если твой dictionary будет пустым, выводишь 0
0
0 / 0 / 1
Регистрация: 21.11.2014
Сообщений: 49
11.12.2014, 00:43  [ТС] 3
Есть другие решения этой задачи?
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 7
11.12.2014, 02:45 4
Reebok32, хз, так сходу не придумаю как это сделать проще
0
839 / 367 / 153
Регистрация: 08.02.2013
Сообщений: 648
11.12.2014, 04:11 5
хз на сколько это "сложно":
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
static bool Solve(int[,] M, out int x, out int y)
{
    int Rows = M.GetLength(0);
    int Columns = M.GetLength(1);
 
    for (y = 0; y < Rows; y++)
    {
        x = 0;
        // Поиск минимального в строке
        for (int c = 0; c < Columns; c++)
            if (M[y, c] < M[y, x])
                x = c;
 
        bool isMax = true;
        // Проверка того, что он максимальный в столбце 
        for (int r = 0; r < Rows && isMax; r++)
            isMax &= M[y, x] >= M[r, x];
 
        if (isMax) return true;
    }
 
    x = 0;
    return false;
}
 
static void Main(string[] args)
{
    int x, y;
    int[,] M = { { 1, 2, 3 }, { 4, 5, 6 } };
 
    Console.WriteLine(Solve(M, out x, out y) ?
        "Value: {2}, Row: {0}, Column: {1}" : "0", 
        y, x, M[y, x]);
 
    Console.ReadLine();
}
0
0 / 0 / 1
Регистрация: 21.11.2014
Сообщений: 49
10.01.2015, 04:01  [ТС] 6
Скажите,как объяснить
C#
1
isMax &= M[y, x] >= M[r, x];
,особенное знак &=
0
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
10.01.2015, 04:50 7
http://msdn.microsoft.com/ru-r... 9ax02.aspx

Добавлено через 2 минуты
http://msdn.microsoft.com/ru-r... bsyk4.aspx
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2015, 04:50
Помогаю со студенческими работами здесь

Найти в матрице элемент, который min в своей строке и max в своем столбце
Ребята, помогите пожалуйста!!! Нужно в Delphi создать програму, которая будет находить в матрице...

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

Вывести все элементы, являющиеся максимальными в своем столбце и одновременно минимальными в своей строке
Привет всем. Помогите начинающему. Двумерный массив. Найти седловую точку. Задана матрица N*M....

В матрице найти элементы, которые являются одновременно минимальными в строке и столбце
В матрице найти элементы (их позицию), которые являются одновременно минимальными в строке и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru