Дана квадратная матрица порядка M. Вывести минимальные из элементов каждой ее диагонали, параллельной побочной (начиная с одноэлементной диагонали A[1,M]3|A[1,1]4).
код на c#
csharp
using System;
class Program
{
static void Main()
{
int[,] matrix = new int[,]
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int m = matrix.GetLength(0);
int n = matrix.GetLength(1);
// находим минимальные элементы для каждой параллельной диагонали
for (int i = 0; i < m + n - 1; i++)
{
int min = int.MaxValue;
// находим начальную позицию для текущей диагонали
int startRow = i < n ? 0 : i - n + 1;
int startCol = i < n ? n - 1 - i : 0;
// пробегаемся по текущей диагонали и находим минимальный элемент
while (startRow < m && startCol < n)
{
if (matrix[startRow, startCol] < min)
{
min = matrix[startRow, startCol];
}
startRow++;
startCol++;
}
Console.WriteLine($"Минимальный элемент на диагонали {i + 1}: {min}");
}
}
}
В этом примере мы создаем двумерный массив matrix и заполняем его значениями. Затем мы находим размеры матрицы M и N. Далее мы проходимся по всем парам диагоналей (от 1 до M + N - 1). Для каждой диагонали мы инициализируем переменную min значением int.MaxValue. Затем мы находим начальную позицию для текущей диагонали, проверяя индексы строк и столбцов. Затем мы пробегаемся по элементам текущей диагонали и находим минимальный элемент. Наконец, мы выводим минимальный элемент на текущей диагонали.
Данное решение имеет сложность O(M * N), поскольку мы пробегаемся по всем элементам матрицы.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет