ЕГЭ · Информатика

Двумерные массивы (матрицы) в ЕГЭ по информатике: методический разбор

Двумерные массивы, или матрицы, — одна из ключевых тем в ЕГЭ по информатике. Задания на матрицы встречаются как в базовой части, так и в задачах повышенной сложности. Понимание принципов обхода матрицы, работы с диагоналями и транспонирования необходимо для успешной сдачи экзамена.

В этой статье мы разберём основные операции с матрицами, приведём реальные примеры задач уровня ЕГЭ и дадим рекомендации по отработке навыков. Материал ориентирован на учащихся 10-11 классов и всех, кто готовится к экзамену самостоятельно.

Мы не будем пересказывать учебник — только практика и алгоритмы, которые помогут решить любую задачу на матрицы.

🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Обход матрицы по строкам и столбцам

Обход матрицы — базовый навык. В ЕГЭ часто требуется найти сумму, произведение, количество элементов, удовлетворяющих условию, или выполнить перестановку строк/столбцов.

Обход по строкам: внешний цикл по i (номер строки), внутренний по j (номер столбца). Для матрицы A размером N×M: for i in range(N): for j in range(M): работаем с A[i][j].

Обход по столбцам: внешний цикл по j, внутренний по i: for j in range(M): for i in range(N): работаем с A[i][j].

Важно помнить, что индексация в Python начинается с 0. При решении задач обращайте внимание на размерность матрицы: часто N и M задаются в условии.

Рассмотрим типичную задачу: найти сумму элементов в каждой строке и вывести максимальную сумму.

Пример 1
Условие.

Дана матрица A размером 5×5. Элементы вводятся с клавиатуры. Найти номер строки с максимальной суммой элементов. Если таких строк несколько, вывести наименьший номер.

Решение.

Шаг 1: Создаём матрицу 5×5, заполняем её.
Шаг 2: Создаём список sums длиной 5, инициализируем нулями.
Шаг 3: Обходим матрицу по строкам: для каждой строки i суммируем элементы A[i][j] по всем j.
Шаг 4: Запоминаем сумму в sums[i].
Шаг 5: Находим максимальное значение в sums, затем проходим по sums слева направо и выводим первый индекс, где значение равно максимуму.
Код на Python:
A = [[int(input()) for _ in range(5)] for _ in range(5)]
sums = [0]*5
for i in range(5):
for j in range(5):
sums[i] += A[i][j]
max_sum = max(sums)
for i in range(5):
if sums[i] == max_sum:
print(i+1) # нумерация строк с 1
break

Главная и побочная диагонали

Диагонали матрицы — частый элемент задач ЕГЭ. Главная диагональ: элементы, у которых номер строки равен номеру столбца (i == j). Побочная диагональ: элементы, у которых i + j == N-1 (для квадратной матрицы N×N).

Для обхода главной диагонали используем один цикл: for i in range(N): A[i][i]. Для побочной: for i in range(N): A[i][N-1-i].

Важно: если матрица не квадратная, понятие диагоналей не определено, но в ЕГЭ обычно дают квадратные матрицы.

Задачи могут требовать найти сумму элементов выше/ниже главной диагонали, или заменить элементы на диагоналях на 0.

Рассмотрим задачу на замену элементов.

Пример 1
Условие.

Дана квадратная матрица A размером N×N (N вводится). Заменить все элементы на главной и побочной диагоналях на 1, остальные на 0. Вывести полученную матрицу.

Решение.

Шаг 1: Считываем N, создаём матрицу N×N, заполненную нулями.
Шаг 2: Проходим по всем элементам матрицы двойным циклом.
Шаг 3: Если i == j или i+j == N-1, присваиваем 1, иначе 0.
Шаг 4: Выводим матрицу.
Код:
N = int(input())
A = [[0]*N for _ in range(N)]
for i in range(N):
for j in range(N):
if i == j or i+j == N-1:
A[i][j] = 1
else:
A[i][j] = 0
for row in A:
print(' '.join(map(str, row)))

Транспонирование матрицы

Транспонирование — преобразование, при котором строки становятся столбцами. Для матрицы A размером N×M транспонированная матрица B имеет размер M×N, и B[j][i] = A[i][j].

В ЕГЭ транспонирование может быть частью более сложного задания, например, умножения матриц или проверки симметричности.

Алгоритм: создаём новую матрицу B размером M×N, заполняем её нулями, затем двойным циклом присваиваем B[j][i] = A[i][j].

Важно: для квадратной матрицы транспонирование можно выполнить без дополнительной памяти, переставляя элементы относительно главной диагонали: for i in range(N): for j in range(i+1, N): A[i][j], A[j][i] = A[j][i], A[i][j].

Рассмотрим задачу на проверку симметричности матрицы относительно главной диагонали.

Пример 1
Условие.

Дана квадратная матрица A размером N×N. Определить, является ли она симметричной относительно главной диагонали (т.е. A[i][j] == A[j][i] для всех i,j).

Решение.

Шаг 1: Считываем N и матрицу.
Шаг 2: Проходим по элементам выше главной диагонали: for i in range(N): for j in range(i+1, N).
Шаг 3: Если A[i][j] != A[j][i], выводим 'NO' и завершаем программу.
Шаг 4: Если после всех проверок не вышли, выводим 'YES'.
Код:
N = int(input())
A = [[int(input()) for _ in range(N)] for _ in range(N)]
symmetric = True
for i in range(N):
for j in range(i+1, N):
if A[i][j] != A[j][i]:
symmetric = False
break
if not symmetric:
break
print('YES' if symmetric else 'NO')

Пример задачи уровня ЕГЭ на матрицы

Рассмотрим задачу, которая может встретиться в части 2 ЕГЭ (высокий уровень). Она требует не только обхода, но и анализа и модификации матрицы.

Условие: Дана матрица A размером N×M (N и M не более 100). Найти в каждой строке максимальный элемент и записать его в одномерный массив B. Затем в матрице A заменить все элементы, равные максимальному в своей строке, на среднее арифметическое всех элементов матрицы, округлённое до целого. Вывести преобразованную матрицу и массив B.

Решение:
1. Считываем N, M и матрицу A.
2. Вычисляем сумму всех элементов и количество элементов, находим среднее арифметическое: avg = sum_all // (N*M) (целочисленное деление, так как требуется округление до целого).
3. Создаём список B длиной N.
4. Для каждой строки i находим максимум: max_val = max(A[i]), записываем его в B[i].
5. Затем проходим по строке i и заменяем все элементы, равные max_val, на avg.
6. Выводим преобразованную матрицу и массив B.

Код на Python:
N, M = map(int, input().split())
A = [[int(input()) for _ in range(M)] for _ in range(N)]
total_sum = sum(sum(row) for row in A)
avg = total_sum // (N * M)
B = []
for i in range(N):
max_val = max(A[i])
B.append(max_val)
for j in range(M):
if A[i][j] == max_val:
A[i][j] = avg
for row in A:
print(' '.join(map(str, row)))
print(' '.join(map(str, B)))

Как эффективно готовиться к задачам на матрицы

Для уверенного решения задач на матрицы на ЕГЭ необходимо:
- Освоить вложенные циклы и работу с индексами.
- Регулярно решать задачи из открытого банка ФИПИ и демоверсий.
- Научиться визуализировать матрицу: рисовать её на бумаге, отмечать диагонали, области.
- Использовать отладку: выводить промежуточные значения для проверки.
- Разобрать типовые алгоритмы: поиск максимума/минимума, суммы, замена, перестановка строк/столбцов.

Если при самостоятельной подготовке возникают трудности, можно обратиться к AI-репетитору. Например, Наставник AI (nastavnik-ai.ru) предлагает персонализированные уроки по информатике с разбором задач в формате диалога. Вы можете выбрать персонажа-наставника (от строгой учительницы до весёлого кота) и пройти пошаговый разбор любой темы, включая матрицы. Сервис использует сократовский метод: не даёт готовый ответ, а подводит к решению через подсказки. Это помогает глубже понять материал и запомнить алгоритмы.

Практикуйтесь ежедневно, и задачи на матрицы перестанут казаться сложными.

Частые вопросы

Что такое двумерный массив простыми словами?
Двумерный массив — это таблица, состоящая из строк и столбцов. Каждый элемент имеет два индекса: номер строки и номер столбца. В Python его можно представить как список списков.
Как в Python создать матрицу 3x3?
Можно использовать генератор: A = [[0]*3 for _ in range(3)]. Также можно ввести с клавиатуры: A = [[int(input()) for j in range(3)] for i in range(3)].
Как найти сумму элементов побочной диагонали?
Для квадратной матрицы N×N сумма элементов побочной диагонали: s = 0; for i in range(N): s += A[i][N-1-i].
Что такое транспонирование матрицы и зачем оно нужно?
Транспонирование превращает строки в столбцы. Это используется, например, при умножении матриц или в задачах на симметричность. В ЕГЭ могут попросить транспонировать матрицу или проверить, является ли она симметричной.
Как решать задачи на матрицы, если я путаю индексы?
Нарисуйте матрицу на бумаге и подпишите индексы. Используйте отладку: выводите i, j и значение элемента. Также можно в начале программы протестировать на маленькой матрице, например 2x2.
Где можно потренироваться решать задачи на матрицы?
Используйте открытый банк заданий ФИПИ, демоверсии ЕГЭ, а также онлайн-платформы. Например, Наставник AI предлагает интерактивные уроки с разбором задач и персонажами-наставниками, что делает подготовку увлекательной.
🧑‍🏫
Разберём эту тему вместе

Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.

Двумерные массивы (матрицы) ЕГЭ: полный разбор с примерами