HDU1035迷宫

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int row,column,enter;
while(true){
row = sc.nextInt();
if(row==0){
break;
}
column = sc.nextInt();
enter = sc.nextInt();
String[] grid=new String[row];
for(int i=0;i<row;i++){
grid[i]=sc.next();
}
int[][] record =new int[row][column];
int r=0,c=enter-1;
int step=0,loop=0;
while(r>=0&&r<row&&c>=0&&c<column){
if(record[r][c]==2){
step-=loop;
break;
}
if(record[r][c]==1){
record[r][c]++;
switch(grid[r].charAt(c)){
case 'N':
r--;
loop++;
break;
case 'S':
r++;
loop++;
break;
case 'E':
c++;
loop++;
break;
case 'W':
c--;
loop++;
break;
}
}
if(record[r][c]==0){
record[r][c]++;
switch(grid[r].charAt(c)){
case 'N':
r--;
step++;
break;
case 'S':
r++;
step++;
break;
case 'E':
c++;
step++;
break;
case 'W':
c--;
step++;
break;
}
}
}
if(loop==0){
System.out.println(step+" step(s) to exit");
}else{
System.out.println(step+" step(s) before a loop of "+loop+" step(s)");
}
}

}

}

在处理迷宫进入循环的时候,可以不用重新走一遍,只需要在record数组里记录走到这里多用的步数,到时候就可以直接计算得出,不用再走一遍

猜你喜欢

转载自www.cnblogs.com/lijiahui-123/p/12582682.html