Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д