Мини-урок · перед практикой

Побочная диагональ

Положение клетки относительно побочной диагонали определяется суммой индексов.

Как к ней подойти

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

Коротко о теме

Двумерный массив читают по двум координатам: сначала строка, затем столбец. Вложенные циклы обходят все ячейки или только нужную часть таблицы. Сверьте размеры массива и границы обоих индексов.

Ключевая идея · Формула для каждой клетки

На диагонали i + j = n − 1; меньшая сумма означает область выше, большая — ниже.

Проверьте перед запуском

  • Диагональ задаётся n−1, а не n.
  • Нельзя создавать изменяемые строки через [[0]*n]*n.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Формула для каждой клетки

На диагонали i + j = n − 1; меньшая сумма означает область выше, большая — ниже.

n = int(input())
a = [[0 if i + j < n - 1 else 1 if i + j == n - 1 else 2
      for j in range(n)] for i in range(n)]
for row in a:
    print(*row)

Время: O(n²). Память: O(n²) для массива.

Другой способ: Сборка строк из блоков

В строке i сначала n−i−1 нулей, затем одна единица и i двоек. Сравнения для каждой клетки не нужны.

n = int(input())
a = []
for i in range(n):
    a.append([0] * (n - i - 1) + [1] + [2] * i)
for row in a:
    print(*row)

Время: O(n²). Память: O(n²) для массива.