Решённую задачу на C++ можно просмотреть здесь
Задача
Для заданной матрицы [latex] A(m,n) [/latex] найти её норму: [latex] \left \| A \right \|_{1} = \max\limits_{i=1,m} \sum\limits_{k=1}^{n} \left | a_{ik} \right |[/latex].
Входные данные
$m$ и $n$ — размеры матрицы, $x$ — временная переменная для хранения следующего значения из входного потока
Выходные данные
$norm$ — норма матрицы
Тесты
Матрица | Построчные суммы | Вывод |
---|---|---|
[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 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
class Main { static function main() { var m, n, norm:Float = 0; m = Std.parseInt(Sys.stdin().readLine()); n = Std.parseInt(Sys.stdin().readLine()); for (i in 0...m) { var s:Float = 0; for (j in 0...n) { var x:Float = Std.parseFloat(Sys.stdin().readLine()); s += Math.abs(x); } if (s > norm) { norm = s; } } Sys.stdout().writeString(Std.string(norm)); } } |
Решение
Нам понадобятся два цикла: во внешнем будем искать максимум, пробегая по всем строкам матрицы; во внутреннем будем для фиксированной строки вычислять сумму абсолютных величин её элементов. Если эта сумма превосходит текущую максимальную, обновляем последнюю. Поскольку все наши суммы будут неотрицательными числами, изначально присвоим переменной max значение 0.
- e-olymp 2162. Палиндром - 06.06.2017
- 2.1.2 Переполнение - 04.06.2017
- e-olymp 2163. Сообразим на троих! - 13.05.2017
Вообще-то существуют >разные нормы. Для Вашего варианта тоже есть своё обозначение.
Добавила обозначение
Хорошо. Следующее замечание.
Если Вы пишите полностью свой текст, то можно и не давать ссылку на оригинальную работу Игоря. Но если заимствуете, то ссылка нужна. Мы ведь чтим уголовный кодекс? 🙂
Чтим. Поэтому ссылка уже добавлена
Принято