Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце - C#
Формулировка задачи:
Дан массив размера n × m, все элементы которого различны.
Необходимо найти такие элементы, которые одновременно являются
минимальными в своей строке и максимальными в своем столбце.
Также нужно вывести индексы этих элементов. Если в массиве нет
таких элементов, нужно вывести 0.
Решение задачи: «Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце»
textual
Листинг программы
- using System;
- class Program
- {
- static int N = 2, M = 3;
- static int[,] matrix;
- static void Main(string[] args)
- {
- matrix = new int[N, M];
- Fill();
- Show();
- Search();
- Console.ReadKey();
- }
- static void Fill()
- {
- Random random = new Random();
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < M; j++)
- {
- int tmp = 0;
- bool ok = false;
- while (!ok)
- {
- ok = true;
- tmp = random.Next(0, N * M + 1);
- for (int n = 0; n < N; n++)
- {
- for (int m = 0; m < M; m++)
- {
- if (tmp == matrix[n, m])
- {
- ok = false;
- break;
- }
- }
- if (!ok) break;
- }
- }
- matrix[i, j] = tmp;
- }
- }
- }
- static void Search()
- {
- bool someone = false;
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < M; j++)
- {
- bool ok = true;
- int current = matrix[i, j];
- for (int k = 0; k < M; k++)
- if (current >= matrix[i, k] && k != j)
- ok = false;
- for (int m = 0; m < N; m++)
- if (current < matrix[m, j] && m != i)
- ok = false;
- if (ok)
- {
- Console.WriteLine("Value: {0} Index: [{1}, {2}]", matrix[i, j], i, j);
- someone = true;
- }
- }
- }
- if (!someone)
- Console.WriteLine(0);
- }
- static void Show()
- {
- for (int i = 0; i < N; i++)
- {
- for (int j = 0; j < M; j++)
- Console.Write(matrix[i, j] + " ");
- Console.WriteLine();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д