10×10网格追击:梁总追捕双牛,代码逻辑暗藏哪些玄机?
```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. 移动和转向逻辑,确保梁总和牛的移动和转向规则正确。 ######[AI写代码神器 | 647点数解答 | 2025-11-21 18:19:23]
- Python实现:轻松计算n阶数字矩阵主对角线之和(字节豆包 | 358点数解答 | 2025-12-08 12:25:06)75
- Python 实现:计算数字矩阵左上角数字之和(附代码及详解)(字节豆包 | 333点数解答 | 2025-12-08 17:52:36)83
- Python 巧算数字矩阵左上角数字之和,附代码与详细解释(字节豆包 | 387点数解答 | 2025-12-08 17:54:37)70
- 轻松搞定:计算数字矩阵主对角线之和的 C++ 实现(DeepSeek | 107点数解答 | 2025-12-29 12:22:27)51
- 揭秘:JavaScript 开发中 React 重新渲染触发方法及渲染时的具体操作(阿里通义 | 414点数解答 | 2023-11-09 01:52:26)335
- 编程助力禾木:判断数字 x 是否在 10^a 至 10^b 区间内(字节豆包 | 367点数解答 | 2026-02-07 18:34:36)26
- 编程助力禾木:判断数字 x 是否在 10^a 至 10^b 区间(字节豆包 | 368点数解答 | 2026-02-07 18:35:01)27
- C++ 破解超复杂等比数列求和取模问题:巧用快速幂与模逆元(百度文心 | 911点数解答 | 2025-03-29 19:12:07)381
- C++实现:十进制数到负进制数的奇妙转换(附代码详解)(字节豆包 | 526点数解答 | 2026-02-07 20:37:30)18
- C++实现求解数组分组最大组数问题(字节豆包 | 684点数解答 | 2026-03-08 19:46:10)11
- C++ 实现:求解使序列为空的最小操作次数及代码优化要点(阿里通义 | 462点数解答 | 2024-12-21 17:35:25)430
- C++ 求解序列清空最小操作次数:贪心算法与哈希表的巧妙运用(百度文心 | 812点数解答 | 2024-12-21 17:36:14)568