Найти максимальный элемент матрицы среди минимальных в строках - C#
Формулировка задачи:
3. Дана действительная матрица 5*4, все элементы различны. В каждой строке выбирается элемент с меньшим значением, затем среди этих чисел выбирается наибольшее. Указать индекс найденного элемента.
Заранее спасибо!
Решение задачи: «Найти максимальный элемент матрицы среди минимальных в строках»
textual
Листинг программы
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace csharp_cmd
{
class Program
{
static void Print(int[] matrix)
{
for (int i = 0; i < matrix.GetLength(0); ++i)
{
Console.Write(matrix[i] + " ");
}
Console.WriteLine();
}
static void Print(int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); ++i)
{
for (int j = 0; j < matrix.GetLength(1); ++j)
Console.Write(matrix[i, j] + " ");
Console.WriteLine();
}
Console.WriteLine();
}
static void Fill(int[,] matrix)
{
for (int i = 0; i < matrix.GetLength(0); ++i)
{
for (int j = 0; j < matrix.GetLength(1); ++j)
{
Console.Write("Value for matrix[{0}, {1}]: ", i, j);
matrix[i, j] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine();
}
}
static void Main()
{
int[,] matrix = new int[5, 4]
{
{21,22,23,24 },
{10,12,13,14 },
{31,32,33,34 },
{51,52,53,54 },
{41,42,43,44 }
};
Shuffle(matrix);
int max = int.MinValue;
for (int i = 0; i < 5; ++i)
{
int min = int.MaxValue;
for (int j = 0; j < 4; ++j)
{
if (min > matrix[i, j])
{
min = matrix[i, j];
}
}
if (min > max)
{
max = min;
}
}
Print(matrix);
var res = CoordinatesOf(matrix, max);
Console.WriteLine($"{max} - Максимальный среди минимальных [{res.Item1}, {res.Item2}]");
}
public static void Shuffle<T>(T[,] array)
{
Random rnd = new Random();
int lengthRow = array.GetLength(1);
for (int i = array.Length - 1; i > 0; i--)
{
int i0 = i / lengthRow;
int i1 = i % lengthRow;
int j = rnd.Next(i + 1);
int j0 = j / lengthRow;
int j1 = j % lengthRow;
T temp = array[i0, i1];
array[i0, i1] = array[j0, j1];
array[j0, j1] = temp;
}
}
public static Tuple<int, int> CoordinatesOf(int[,] matrix, int value)
{
int w = matrix.GetLength(0); // width
int h = matrix.GetLength(1); // height
for (int x = 0; x < w; ++x)
{
for (int y = 0; y < h; ++y)
{
if (matrix[x, y].Equals(value))
return Tuple.Create(x, y);
}
}
return Tuple.Create(-1, -1);
}
}
}