НА ПИТОНЕ:
Даны два числа n и m. Создайте массив n×m и заполните его по следующим правилам:
Числа, стоящие в строке 0 или в столбце 0 равны 1 (A[0][j] = 1, A[i][0] = 1).
Для всех остальных элементов массива A[i][j] = A[i-1][j] + A[i][j-1], то есть каждый элемент равен сумме двух элементов, стоящих слева и сверху от него.
Входные данные:
Вводятся два натуральных числа n и m, не превышающих 100.
Выходные данные:
Выведите данный массив на экран.
Примеры:
Ввод:
3 3
Вывод:
1 1 1
1 2 3
1 3 6
Я написал выдает неверный ответ:
n, m = map(int, input().split())
a = [[1] * m for i in range(n)]
r=1
s=0
while r for answer in range(m):
r=1
s+=1
for em in range(n):
while r a[s][r]=a[s - 1][r]+a[s][r - 1]
r+=1
for row in a:
for elem in row:
print(elem, end=' ')
print()
Код в приложении. У вас ошибка была в неверном создании массива, т.к. при умножении массива на число, новые массивы не создаются. Они все являются ссылками. Т.е. при изменении в матрице какой-то строки изменялись все строки.
# -*- coding: utf-8 -*-
# b1ejPB4w (*случайный набор символов*).
import numpy
""" «Безопасный» ввод целочисленных n и m.
"""
while True:
try:
(n, m)=(int(input("n: ")), int(input("m: ")))
break
except ValueError:
print("Something error. Try enter integers only.\n")
""" Создаем матрицу размера n x m, содержащую еденички в каждой ячейке:
"""
matrix=numpy.ones((n, m), numpy.uint32)
""" Проходимся по каждой строчке и столбцу (исключая нулевые) и задаем значения ячейкам:
"""
for row in range(1, n):
for column in range(1, m):
matrix[row, column]=matrix[row - 1, column] + matrix[row, column - 1]
""" Выводим результат:
"""
print(matrix)