[Вопрос решен] создается матрица размером ИхМ, которую заполняют символами...

создается матрица размером ИхМ, которую заполняют символами «минус» (-) или «звездочка» (*). Минус обозначает свободное место, а звездочка – занятое.

Необходимо посчитать количество способов поставить «крестик» в матрице с учетом того, что его можно поставить лишь в ту ячейку, соседние с которой не заняты (сверху, снизу, справа и слева).

На pyhton напишите программу, которая

выполняет следующие действия

Запрашивает у пользователя числа N и М (где 1 <= N <=100 и 1 <= М <= 100)

Запрашивает у пользователя матрицу N на М заполненную символами «-» (свободное место) или «*» (занятое место).

(1) Смотреть решение

Ответ нейросети AfinaAI

Привет!​ С удовольствием помогу тебе написать программу, которая будет подсчитывать количество способов поставить ″крестик″ в матрице, учитывая условия, что его можно поставить только в свободные ячейки, соседние с которыми не заняты.​Для начала, я предлагаю прочитать от пользователя числа N и М, которые будут определять размер матрицы.​ Проверим, что они соответствуют условию 1 < N < 100 и 1 < М < 100⁚ python N int(input(″Введите число N⁚ ″)) # читаем число N M int(input(″Введите число M⁚ ″)) # читаем число M if N < 1 or N > 100 or M < 1 or M > 100⁚
print(″Числа не соответствуют условию.​″)
exit # завершаем программу

Далее нам нужно считать матрицу размером N на M, заполненную символами ″-″ и ″*″.​ При этом, я предлагаю проверить, что каждый символ в матрице является либо ″-″ либо ″*″⁚

python
matrix [] # создаем пустую матрицу
for i in range(N)⁚
row input(″Введите строку символов матрицы⁚ ″)

if len(row) !​ M⁚ # проверяем, что длина строки соответствует количеству столбцов
print(″Неправильная длина строки.​″)
exit # завершаем программу

for char in row⁚
if char !​ ″-″ and char !​ ″*″⁚ # проверяем, что символ является либо ″-″ либо ″*″
print(″Неправильный символ.​″)
exit # завершаем программу

matrix.​append(row) # добавляем строку в матрицу

Теперь мы можем начать разрабатывать основную часть программы, которая будет подсчитывать количество способов поставить ″крестик″ в матрице.​

Мы будем использовать рекурсию, чтобы перебрать все возможные позиции для ″крестика″.​ Для каждой позиции мы будем проверять, что она свободна и соседние ячейки также свободны.​python
def count_crosses(matrix, i, j)⁚
if i < 0 or i > len(matrix) or j < 0 or j > len(matrix[0])⁚
return 0 # если текущая позиция находится за пределами матрицы, возвращаем 0
elif matrix[i][j] !​ ″-″⁚
return 0 # если текущая позиция не свободна, возвращаем 0
else⁚
count 1 # увеличиваем счетчик на 1, так как текущая позиция свободна и может быть занята

Читайте также  Существует ли дерево с 7 вершинами и 8 ребрами?

# заносим ″крестик″ в текущую позицию
matrix[i] matrix[i][⁚j] ″X″ matrix[i][j 1⁚]

# рекурсивно вызываем функцию count_crosses для соседних позиций
count count_crosses(matrix, i-1, j)
count count_crosses(matrix, i 1, j)
count count_crosses(matrix, i, j-1)
count count_crosses(matrix, i, j 1)

# возвращаем обратно ″-″ в текущую позицию
matrix[i] matrix[i][⁚j] ″-″ matrix[i][j 1⁚]

return count

# вызываем функцию count_crosses для каждой свободной позиции в матрице,
# чтобы посчитать общее количество способов поставить ″крестик″
total_count 0

for i in range(N)⁚
for j in range(M)⁚
if matrix[i][j] ″-″⁚
total_count count_crosses(matrix, i, j)

Наконец, остается только вывести общее количество способов⁚

python
print(″Общее количество способов поставить ‘крестик’⁚″, total_count)

Таким образом, мы разработали программу, которая запрашивает у пользователя числа N и М, а затем матрицу N на M, заполненную символами ″-″ и ″*″, и подсчитывает количество способов поставить ″крестик″ в матрице, учитывая условия задачи.​
Я надеюсь, что этот руководство помогло тебе.​ Удачи!​

AfinaAI