题目分析
蚂蚱会在n个房间中根据既定房间规则向固定方向跳跃固定长度,试问是否能够跳出这个长度(即落点位置在0或n+1)
思路分析
输入n就有n个房间,n套规则(固定方向和跳跃距离),蚂蚱到哪个房间就遵守其规则,所以只需要按照落点位置执行+-即可
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();//存储总长度
sc.nextLine();
char[] a=sc.nextLine().toCharArray();//存储方向
int[] b= new int[n];//存储移动位置
//因此同下标就是同一套操作
for (int i = 0; i < n; i++) {
b[i]=sc.nextInt();
}//存入移动位置
int sta=1;//初始化起始点
String re="INFINITE";//默认答案
for (int i = 0; i < n; i++) {//此处只为表示一套循环次数(如果一套循环没跳出去说明就死循环跳不出去了)
if (a[sta-1]=='>'){//判定当前房间的移动方向
if (sta+b[sta-1]<n+1){//判断下一次跳跃能不能跳出去
sta+=b[sta-1];//不能就更新落点
}else {
re="FINITE";//跳出去就结束
break;
}
}else {
if (sta-b[sta-1]>0){//同理,向左跳跃能不能跳出去
sta-=b[sta-1];//不能就更新落点
}else {
re="FINITE";//跳出去更新答案并结束
break;
}
}
}
System.out.println(re);
}
}
感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。