Как организовать цикл обхода такого треугольника матрицы - C (СИ)
Формулировка задачи:
Существует две матрицы размера NxN (N<=20). Первая введена с клавиатуры, в зависимости от i,j существует треугольник такого вида, как на картинке. Необходимо обойти его и найти максимум среди его элементов и записать в i,j второй матрицы. Все кажется простым, но как организовать цикл обхода такого треугольника, учитывая что для разных i,j он будет разным.
Решение задачи: «Как организовать цикл обхода такого треугольника матрицы»
textual
Листинг программы
/* разделим треугольник на 2 части по горизонтали */ int get_max(const int **m, int size, int row, int col) { int i, j, first; int maxi = m[row][col]; first = col; /* верхняя часть */ for(j = row; j>=0; --j) { for(i = first; i < size; ++i) { if(m[i][j] > maxi) maxi = m[i][j]; } ++first; } /* нижняя */ first = col + 1; for(j = row + 1; j < size; --j) { for(i = first; i < size; ++i) { if(m[i][j] > maxi) maxi = m[i][j]; } ++first; } return maxi; }
Объяснение кода листинга программы
В данном коде реализован алгоритм поиска максимального элемента в треугольнике матрицы. Алгоритм можно разделить на следующие шаги:
- Инициализация переменной
maxi
значением элементаm[row][col]
. - Инициализация переменной
first
значениемcol
. - Поиск максимального элемента в верхней части треугольника, начиная с
row
иfirst
, до тех пор, покаj
больше или равно 0. При этом, если элементm[i][j]
больше текущего максимального значенияmaxi
, то обновляемmaxi
. После каждой итерации по внутреннему циклу увеличиваем значениеfirst
на 1. - Поиск максимального элемента в нижней части треугольника, начиная с
row + 1
иfirst
, до тех пор, покаj
меньше размера матрицы. При этом, если элементm[i][j]
больше текущего максимального значенияmaxi
, то обновляемmaxi
. После каждой итерации по внутреннему циклу увеличиваем значениеfirst
на 1. - Возврат найденного максимального значения
maxi
. В данном коде переменнаяsize
не используется, поэтому можно предположить, что это просто проверочный аргумент, который не влияет на работу алгоритма.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д