Привет! Меня зовут Алексей‚ и я хочу рассказать тебе о программе‚ которую я написал на Python для подсчета количества способов поставить ″крестик″ в заданной матрице.
Для начала‚ программа запрашивает у пользователя два числа⁚ N и M‚ которые являются размерами матрицы. При этом‚ значения N и M должны быть в диапазоне от 1 до 100. Далее‚ программа просит пользователя ввести саму матрицу‚ где ″-″ означает свободное место‚ а ″*″ ⸺ занятое.
Я реализовал эту программу с помощью рекурсии. Программа проходит по каждой ячейке матрицы и проверяет‚ можно ли поставить ″крестик″ в эту ячейку. Если можно‚ то программа пробует поставить ″крестик″ и переходит к следующей ячейке. Если невозможно‚ программа переходит к следующей ячейке без изменения текущей ячейки.По завершении работы программы‚ она выводит количество способов поставить ″крестик″ в матрицу с учетом условия‚ что соседние ячейки не должны быть заняты.Вот как выглядит фрагмент кода программы⁚
python
def count_ways(matrix‚ row‚ col)⁚
if row < 0 or row > len(matrix) or col < 0 or col > len(matrix[0])⁚
return 0
if matrix[row][col] ″*″⁚
return 0
if row ― 1 > 0 and matrix[row ⸺ 1][col] ″*″⁚
return 0
if row 1 < len(matrix) and matrix[row 1][col] ″*″⁚
return 0
if col ⸺ 1 > 0 and matrix[row][col ― 1] ″*″⁚
return 0
if col 1 < len(matrix[0]) and matrix[row][col 1] ″*″⁚
return 0
if matrix[row][col] ″-″⁚
matrix[row][col] ″*″
count 1
count count_ways(matrix‚ row ⸺ 1‚ col)
count count_ways(matrix‚ row 1‚ col)
count count_ways(matrix‚ row‚ col ⸺ 1)
count count_ways(matrix‚ row‚ col 1)
matrix[row][col] ″-″
return count
return 0
def main⁚
N int(input(″Введите число N⁚ ″))
M int(input(″Введите число M⁚ ″))
matrix []
for i in range(N)⁚
row input(″Введите строку матрицы⁚ ″)
matrix.append(list(row))
count 0
for i in range(N)⁚
for j in range(M)⁚
count count_ways(matrix‚ i‚ j)