Ю4.33

Задача

Для заданной матрицы  [latex] A(m,n) [/latex]  найти её норму:  [latex] \left \| A \right \| = \max_{i=1,m} \sum_{k=1}^{n} \left | a_{ik} \right |[/latex].

Тесты

Мне кажется, что достаточно одного теста с матрицей, среди элементов которой будут нули, отрицательные и дробные числа:

Ввод Построчные суммы Вывод
[latex] \begin{pmatrix} 1 & -3 & 2 & 4 & 0 \\ -3 & -7.5 & 2.3 & -3.1 & 2.8 \\ 3.4 & -4.5 & 0 & 0 & 2 \\ 3.2 & 4.7 & 2.8 & -3.1 & -4.3 \end{pmatrix} [/latex] [latex] \begin{matrix} 10 \\ 18.7 \\ 14.4 \\ 18.1 \end{matrix}[/latex] 18.7

Решение

Нам понадобятся два цикла: во внешнем будем искать максимум, пробегая по всем строкам матрицы; во внутреннем будем для фиксированной строки вычислять сумму абсолютных величин её элементов. Если эта сумма превосходит текущую максимальную, обновляем последнюю. Поскольку все наши суммы будут неотрицательными числами, изначально присвоим переменной max значение [latex] 0 [/latex].

Хотя тема называется «Массивы», фактически массив нам здесь не нужен. От нас не требуют производить какие-либо действия над элементами матрицы, поэтому для экономии памяти и времени мы будем «обрабатывать её» , не сохраняя в отдельный массив.

Если бы в задаче требовалось по каким-либо причинам сохранить матрицу, алгоритм бы не поменялся. Только пришлось бы добавить следующий (или эквивалентный ему) фрагмент кода:

Код на С++

Ideone (C++)

Код на Java

Ideone (Java)

Вустянюк Ігор Дмитрович
Вустянюк Ігор Дмитрович

Latest posts by Вустянюк Ігор Дмитрович (see all)

One thought on “Ю4.33