Побочная диагональ
Положение клетки относительно побочной диагонали определяется суммой индексов.
Как к ней подойти
Разберитесь, как работать со строками и столбцами двумерного массива, не путая индексы.
Двумерный массив читают по двум координатам: сначала строка, затем столбец. Вложенные циклы обходят все ячейки или только нужную часть таблицы. Сверьте размеры массива и границы обоих индексов.
На диагонали 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²) для массива.