阅读完此题,最棘手的问题就是“机器人存在一些bug,可能会忽略一些指令,或者所有指令,或者全部忽略”。这是此题的难点之处,为什么呢?因为我们根本无法控制机器人的行动轨迹,不知道在哪会“出现bug”,所以行动轨迹根本无法把握。基于此,我们只能从字符串的命令出发,我们先算出两个计算器人的起始位置之间的间距,用x_spacing,y_spacing表示,再接下来对命令的每个字符遍历,如果是U或D,进行y++,R或L进行x++,为什么要进行这样操作呢?因为,两个机器人一个向左运动,一个向右运动,产生的间距最大就是相加,所以进行y++,基于此便可以解决此题、
import java.util.Scanner;
public class Main{
public static void main(String arg[]){
Scanner sc=new Scanner(System.in);
int x1=sc.nextInt();
int y1=sc.nextInt();
int x2=sc.nextInt();
int y2=sc.nextInt();
String order=sc.next();
int x=0,y=0,x_spacing=Math.abs(x1-x2),y_spacing=Math.abs(y1-y2);
for(int i=0;i<order.length();i++){
if(order.charAt(i)=='U'||order.charAt(i)=='D') {
y++;
}
else {
x++;
}
}
if(y>=y_spacing&&x>=x_spacing){
System.out.print("Explosion");
}else{
System.out.print("Safe");
}
}
}