Двумерные массивы (матрицы) в ЕГЭ по информатике: методический разбор
Двумерные массивы, или матрицы, — одна из ключевых тем в ЕГЭ по информатике. Задания на матрицы встречаются как в базовой части, так и в задачах повышенной сложности. Понимание принципов обхода матрицы, работы с диагоналями и транспонирования необходимо для успешной сдачи экзамена.
В этой статье мы разберём основные операции с матрицами, приведём реальные примеры задач уровня ЕГЭ и дадим рекомендации по отработке навыков. Материал ориентирован на учащихся 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 задаются в условии.
Рассмотрим типичную задачу: найти сумму элементов в каждой строке и вывести максимальную сумму.
Дана матрица 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.
Рассмотрим задачу на замену элементов.
Дана квадратная матрица 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].
Рассмотрим задачу на проверку симметричности матрицы относительно главной диагонали.
Дана квадратная матрица 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) предлагает персонализированные уроки по информатике с разбором задач в формате диалога. Вы можете выбрать персонажа-наставника (от строгой учительницы до весёлого кота) и пройти пошаговый разбор любой темы, включая матрицы. Сервис использует сократовский метод: не даёт готовый ответ, а подводит к решению через подсказки. Это помогает глубже понять материал и запомнить алгоритмы.
Практикуйтесь ежедневно, и задачи на матрицы перестанут казаться сложными.
Частые вопросы
Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.