3 条题解
-
0
python题解:
import sys def solve(): input = sys.stdin.readline r, c, n = map(int, input().split()) g = [[0] * (c + 2) for _ in range(r + 2)] robot_pos = [[0] * (c + 2) for _ in range(r + 2)] for i in range(1, r + 1): row = input().strip() for j, ch in enumerate(row, 1): g[i][j] = ord(ch) robot_r = [0] * (n + 5) robot_c = [0] * (n + 5) robot_dir = [0] * (n + 5) has_item = [0] * (n + 5) # 0/1代替True/False holding = [0] * (n + 5) for i in range(1, n + 1): robot_r[i], robot_c[i], robot_dir[i] = map(int, input().split()) robot_pos[robot_r[i]][robot_c[i]] = ord('@') k = int(input()) dirs = [(-1, 0), (0, 1), (1, 0), (0, -1)] ans = 0 for _ in range(k): id_num, op = input().split() id_num = int(id_num) cr = robot_r[id_num] cc = robot_c[id_num] cd = robot_dir[id_num] if op == 'F': nr, nc = cr + dirs[cd][0], cc + dirs[cd][1] if 1 <= nr <= r and 1 <= nc <= c: if g[nr][nc] != ord('#') and robot_pos[nr][nc] != ord('@'): robot_pos[cr][cc] = ord('.') robot_pos[nr][nc] = ord('@') robot_r[id_num], robot_c[id_num] = nr, nc ans += 1 elif op == 'L': robot_dir[id_num] = (cd + 3) % 4 ans += 1 elif op == 'R': robot_dir[id_num] = (cd + 1) % 4 ans += 1 elif op == 'P': if not has_item[id_num] and ord('A') <= g[cr][cc] <= ord('Z'): has_item[id_num] = 1 holding[id_num] = g[cr][cc] g[cr][cc] = ord('.') ans += 1 elif op == 'D': if has_item[id_num] and g[cr][cc] == ord('.'): has_item[id_num] = 0 g[cr][cc] = holding[id_num] holding[id_num] = ord(' ') ans += 1 print(ans) for i in range(1, r + 1): print(''.join(chr(g[i][j]) for j in range(1, c + 1))) if __name__ == "__main__": solve()
信息
- ID
- 5628
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 14
- 已通过
- 2
- 上传者