import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
char[][] chars=new char[15][15];
//定义方向
int[] walkx={-100,0,1,0,-1};
int[] walky={-100,1,0,-1,0};
int n=sc.nextInt();
int m=sc.nextInt();
sc.nextLine();
//存地图(并找人找终点)
int x=0,y=0,px=0,py=0;
for (int i=1;i<=n;i++){
String s=sc.next();
for (int j=1;j<=m;j++){
chars[i][j]=s.charAt(j-1);
if (s.charAt(j-1)=='S'){
x=i;
y=j;
}
if (s.charAt(j-1)=='T'){
px=i;
py=j;
}
}
}
//开辟队列
Queue<Point> q=new ArrayDeque<>();
//存入头节点
Point p=new Point();
p.x=x;
p.y=y;
q.add(p);
while (!q.isEmpty()){
if (q.peek().x==px&&q.peek().y==py){ //说明到终点了
System.out.println("yes");
}
for (int i=1;i<=4;i++){
int dx=q.peek().x+walkx[i];
int dy=q.peek().y+walky[i];
if (dx>=1&&dx<=n&&dy>=1&&dy<=m&&chars[dx][dy]!='*'){
Point point=new Point();
point.x=dx;
point.y=dy;
q.add(point);
}
}
q.remove();
}
System.out.println("no");
}
}
class Point{
int x;
int y;
}
这个程序报OutOfMemoryError是什么原因,找了半天没想明白。。
```?%ra=link
题目链接https://nanti.jisuanke.com/t/T1595
数组越界异常了,注意定义的数组大小,访问数组索引长度不能大于等于数组长度。