public class TestOne {
static String[] mg = new String[10]; //迷宫数组
static int ans = 0; //记录结果
static int[][] vis = new int[10][10]; //访问数组
public static void main(String[] args) {
//1.输入迷宫数组
mg[0] = "UDDLUULRUL";
mg[1] = "UURLLLRRRU";
mg[2] = "RRUURLDLRD";
mg[3] = "RUDDDDUUUU";
mg[4] = "URUDLLRRUU";
mg[5] = "DURLRLDLRL";
mg[6] = "ULLURLLRDU";
mg[7] = "RDLULLRDDD";
mg[8] = "UUDDUDUDLL";
mg[9] = "ULRDLUURRR";
//2.对迷宫进行深度优先遍历
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
clr(); //每次重置vis的值
if(dfs(i,j))
ans++;
}
}
System.out.println(ans);
}
//重置vis的值
private static void clr() {
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
vis[i][j]=0;
}
}
}
private static boolean dfs(int i, int j) {
if(i<0 || j<0 || i>9 || j>9) {
return true;
}
if(vis[i][j]==1) {
return false;
}
vis[i][j]=1;
switch(mg[i].charAt(j)) {
case 'U':
return dfs(i-1,j);
case 'D':
return dfs(i+1,j);
case 'L':
return dfs(i,j-1);
case 'R':
return dfs(i,j+1);
default:
return false;
}
}
}
结果:31