** ПИТОНЕ: Даны два числа n и m. Создайте массив n×m и заполните его по следующим...

+217 голосов
3.4m просмотров

НА ПИТОНЕ: Даны два числа 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()


Информатика (13 баллов) | 3.4m просмотров
Дано ответов: 2
+84 голосов
Правильный ответ

# -*- 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)

(149k баллов)
+95 голосов

Код в приложении. У вас ошибка была в неверном создании массива, т.к.  при умножении массива на число, новые массивы не создаются. Они все являются ссылками. Т.е. при изменении в матрице какой-то строки изменялись все строки.

(4.7k баллов)