注意:每次转向是再上一次转向后的基础上继续转向
import java.util.Scanner; public class LANQIAO { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //两个方向数组前 左 后 右 int[] dx = {0,-1, 0 , 1}; int[] dy = {1, 0, -1, 0}; // 表示初始方向为右 int d = 3,nowx = 0,nowy = 0 , x; int n = sc.nextInt(); String[] op = new String[n + 2]; for (int i = 0; i < n; i++) { op[i] = sc.next(); x = sc.nextInt(); // 四个方向 如果是f的话就不用转方向 最后直接移动 if(op[i].charAt(0) == 'l'){ d = (d + 1) % 4; }else if(op[i].charAt(0) == 'b'){ d = (d + 2 )% 4; }else if(op[i].charAt(0) == 'r'){ d = (d + 3) % 4; } // 四个方向共用一个移动 nowx += dx[d] * x; nowy += dy[d] * x; } System.out.println(nowx +" "+nowy); } }