Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Решить задачу на C++ или Python СРОЧНО (да опять)

Трифон Знаток (312), на голосовании 9 месяцев назад
Тренировка Ромы
Рома решил побегать по стадиону, который можно представить как клетчатое поле размера n×m
(поле состоит из n
строк и m
столбцов).

Изначально Рома находится в клетке, отмеченной символом «R». Помимо Ромы на стадионе есть клетки, в которых лежат монетки, отмеченные символом «v», клетки, в которых находятся стены, отмеченные символом «x», а также пустые клетки, отмеченные символом «.». В клетке, в которой изначально находится Рома, нет стены, а также в ней не лежит монетка.

В процессе тренировки Рома совершает k
забегов. Во время каждого забега Рома движется строго в одном направлении: вправо, вверх, влево или вниз по полю, пока не упрется в стену (то есть, пока следующая клетка в данном направлении не будет содержать стену) или границу поля. Каждый раз, когда Рома пробегает клетку, в которой находится монетка, он забирает ее себе. После этого данная клетка навсегда становится пустой.

По описанию поля и последовательности забегов Ромы определите для каждого забега, сколько монеток соберет Рома во время него.

Формат входных данных
Первая строка содержит три целых числа n
, m
и k
(1≤n,m,k≤800
) — количество строк и столбцов в поле, а также количество забегов, соответственно.

Вторая строка содержит строку, состоящую из k
символов «R» (движение вправо), «U» (движение вверх), «L» (движение влево) и «D» (движение вниз). Каждый символ описывает направление движения Ромы во время i
-го забега.

Каждая из следующих n
строк содержит m
символов «R», «v», «x» и «.». Смысл данных символов был описан ранее в условии задачи.

Формат выходных данных
Выведите k
целых чисел — количество монеток, собранных Ромой во время каждого забега.
Голосование за лучший ответ
Professional Professional Мудрец (15209) 10 месяцев назад
Ниже приведено решение задачи на языке Python:

```python
def collect_coins(n, m, k, directions, field):
coins_collected = []
for i in range(k):
direction = directions[i]
coins = 0
row, col = find_starting_position(field)

while is_valid_position(row, col, n, m) and field[row][col] != 'x':
if field[row][col] == 'v':
coins += 1
field[row][col] = '.'

if direction == 'R':
col += 1
elif direction == 'U':
row -= 1
elif direction == 'L':
col -= 1
elif direction == 'D':
row += 1

coins_collected.append(coins)

return coins_collected


def find_starting_position(field):
for i in range(len(field)):
for j in range(len(field[0])):
if field[i][j] == 'R':
return i, j
return -1, -1


def is_valid_position(row, col, n, m):
return row >= 0 and row < n and col >= 0 and col < m


# Чтение входных данных
n, m, k = map(int, input().split())
directions = input()
field = []
for _ in range(n):
row = list(input())
field.append(row)

# Вызов функции и вывод результатов
result = collect_coins(n, m, k, directions, field)
for coins in result:
print(coins)
```

Вы можете использовать данный код, чтобы решить задачу на языке Python. Функция `collect_coins` принимает размеры поля, последовательность направлений забегов Ромы и само поле. Она выполняет забеги Ромы, подсчитывая количество собранных монеток во время каждого забега.

Функция `find_starting_position` находит начальную позицию Ромы на поле.

Функция `is_valid_position` проверяет, является ли заданная позиция допустимой в пределах размеров поля.

В основной части кода считываются входные данные, вызывается функция `collect_coins`, и результаты выводятся на экран.
ТрифонЗнаток (312) 10 месяцев назад
да засунь свой чатгпт куда подальше
Максим Комаров Знаток (288) 10 месяцев назад
```python
def collect_coins(n, m, k, directions, field):
coins_collected = []
for i in range(k):
direction = directions[i]
coins = 0
row, col = find_starting_position(field)

while is_valid_position(row, col, n, m) and field[row][col] != 'x':
if field[row][col] == 'v':
coins += 1
field[row][col] = '.'

if direction == 'R':
col += 1
elif direction == 'U':
row -= 1
elif direction == 'L':
col -= 1
elif direction == 'D':
row += 1

coins_collected.append(coins)

return coins_collected


def find_starting_position(field):
for i in range(len(field)):
for j in range(len(field[0])):
if field[i][j] == 'R':
return i, j
return -1, -1


def is_valid_position(row, col, n, m):
return row >= 0 and row < n and col >= 0 and col < m


# Чтение входных данных
n, m, k = map(int, input().split())
directions = input()
field = []
for _ in range(n):
row = list(input())
field.append(row)

# Вызов функции и вывод результатов
result = collect_coins(n, m, k, directions, field)
for coins in result:
print(coins)
```

Вы можете использовать данный код, чтобы решить задачу на языке Python. Функция `collect_coins` принимает размеры поля, последовательность направлений забегов Ромы и само поле. Она выполняет забеги Ромы, подсчитывая количество собранных монеток во время каждого забега.

Функция `find_starting_position` находит начальную позицию Ромы на поле.

Функция `is_valid_position` проверяет, является ли заданная позиция допустимой в пределах размеров поля.

В основной части кода считываются входные данные, вызывается функция `collect_coins`, и результаты выводятся на экран.
Похожие вопросы