Найти элементы, которые одновременно являются минимальными в своей строке и максимальными в своем столбце - 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();
        }
    }
}

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


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

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

7   голосов , оценка 4.571 из 5
Похожие ответы