Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце»

textual
Листинг программы
  1. using System;
  2.  
  3. class Program
  4. {
  5.     static int N = 2, M = 3;
  6.     static int[,] matrix;
  7.  
  8.     static void Main(string[] args)
  9.     {
  10.         matrix = new int[N, M];
  11.         Fill();
  12.         Show();
  13.         Search();
  14.         Console.ReadKey();
  15.     }
  16.  
  17.     static void Fill()
  18.     {
  19.         Random random = new Random();
  20.         for (int i = 0; i < N; i++)
  21.         {
  22.             for (int j = 0; j < M; j++)
  23.             {
  24.                 int tmp = 0;
  25.                 bool ok = false;
  26.                 while (!ok)
  27.                 {
  28.                     ok = true;
  29.                     tmp = random.Next(0, N * M + 1);
  30.                     for (int n = 0; n < N; n++)
  31.                     {
  32.                         for (int m = 0; m < M; m++)
  33.                         {
  34.                             if (tmp == matrix[n, m])
  35.                             {
  36.                                 ok = false;
  37.                                 break;
  38.                             }
  39.                         }
  40.                         if (!ok) break;
  41.                     }
  42.                 }
  43.                 matrix[i, j] = tmp;
  44.             }
  45.         }
  46.     }
  47.     static void Search()
  48.     {
  49.         bool someone = false;
  50.         for (int i = 0; i < N; i++)
  51.         {
  52.             for (int j = 0; j < M; j++)
  53.             {
  54.                 bool ok = true;
  55.                 int current = matrix[i, j];
  56.                 for (int k = 0; k < M; k++)
  57.                     if (current >= matrix[i, k] && k != j)
  58.                         ok = false;
  59.                 for (int m = 0; m < N; m++)
  60.                     if (current < matrix[m, j] && m != i)
  61.                         ok = false;
  62.                 if (ok)
  63.                 {
  64.                     Console.WriteLine("Value: {0} Index: [{1}, {2}]", matrix[i, j], i, j);
  65.                     someone = true;
  66.                 }
  67.             }
  68.         }
  69.         if (!someone)
  70.             Console.WriteLine(0);
  71.     }
  72.     static void Show()
  73.     {
  74.         for (int i = 0; i < N; i++)
  75.         {
  76.             for (int j = 0; j < M; j++)
  77.                 Console.Write(matrix[i, j] + " ");
  78.             Console.WriteLine();
  79.         }
  80.     }
  81. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы