酷代码 AI
菜单
服务商

4、题目描述 两只牛逃跑到了森林里。梁总 开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和 梁总)。 追击在 10×10 的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一起),或者 梁总。两头牛和 梁总 可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。 一个格子可以是: - `.` 空地; - `*` 障碍物; - `C` 两头牛; - `F` 梁总。 这里有一个地图的例子: *...*..... ......*... ...*...*.. .......... ...*.F.... *.....*... ...*...... ..C......* ...*.*.... .*.*...... 牛在地图里以固定的方式游荡。每分钟,它们可以向前移动或是转弯。如果前方无障碍(地图边沿也是障碍),它们会按照原来的方向前进一步。否则它们会用这一分钟顺时针转 90 度。 同时,它们不会离开地图。 梁总 深知牛的移动方法,他也这么移动。 每次(每分钟)梁总 和两头牛的移动是同时的。如果他们在移动的时候穿过对方,但是没有在同一格相遇,我们不

```python # 定义方向,0: 北,1: 东,2: 南,3: 西 directions = [(-1, 0), (0, 1), (1, 0), (0, -1)] # 读取地图 map_grid = [] for _ in range(10): row = input() map_grid.append(row) # 寻找梁总和牛的初始位置 for i in range(10): for j in range(10): if map_grid[i][j] == 'F': farmer_x, farmer_y = i, j elif map_grid[i][j] == 'C': cows_x, cows_y = i, j # 初始方向都为北 farmer_direction = 0 cows_direction = 0 # 记录状态,避免无限循环 visited = set() # 初始化时间 minutes = 0 while True: # 记录当前状态 state = (farmer_x, farmer_y, farmer_direction, cows_x, cows_y, cows_direction) if state in visited: print(0) break visited.add(state) # 梁总移动 new_farmer_x = farmer_x + directions[farmer_direction][0] new_farmer_y = farmer_y + directions[farmer_direction][1] if 0 <= new_farmer_x < 10 and 0 <= new_farmer_y < 10 and map_grid[new_farmer_x][new_farmer_y] != '*': farmer_x = new_farmer_x farmer_y = new_farmer_y else: farmer_direction = (farmer_direction + 1) % 4 # 牛移动 new_cows_x = cows_x + directions[cows_direction][0] new_cows_y = cows_y + directions[cows_direction][1] if 0 <= new_cows_x < 10 and 0 <= new_cows_y < 10 and map_grid[new_cows_x][new_cows_y] != '*': cows_x = new_cows_x cows_y = new_cows_y else: cows_direction = (cows_direction + 1) % 4 # 判断是否相遇 minutes += 1 if farmer_x == cows_x and farmer_y == cows_y: print(minutes) break ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 边界条件判断,要确保梁总和牛不会移动到地图之外。 2. 状态记录,避免因为循环导致程序陷入无限循环。 3. 移动和转向逻辑,确保梁总和牛的移动和转向规则正确。 [2025-11-21 18:19:23 | AI写代码神器 | 647点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多