點選檢視:藍橋杯曆年真題 題解目錄
迷宮
1.在生成字元數組時,可以直接使用字元串,也可以用 ctr+F 将"U"替換成" 'U', ",
其餘三個字元同理,再加上大括号即可。
2. 10x10的數組中的每一個字元都代表一個 人,用嵌套for循環周遊check()每一個字元.
3. 利用一個輔助的數組,做過的位置變為1,如果再次來的1得位置,則說明有循環走不出去
4. 四個方向 每變換一次,i和j變化一次,當i<0,j<0,i>9,j>9時,走迷宮
5. check()每個字元時,都要把輔助數組清零。
import java.util.Scanner;
public class Main001_迷宮{
static int[][] t = new int[10][10];
public static void main(String[] args) {
char dir[][] = new char[][] {
{'U','D','D','L','U','U','L','R','U','L'},
{'U','U','R','L','L','L','R','R','R','U'},
{'R','R','U','U','R','L','D','L','R','D'},
{'R','U','D','D','D','D','U','U','U','U'},
{'U','R','U','D','L','L','R','R','U','U'},
{'D','U','R','L','R','L','D','L','R','L'},
{'U','L','L','U','R','L','L','R','D','U'},
{'R','D','L','U','L','L','R','D','D','D'},
{'U','U','D','D','U','D','U','D','L','L'},
{'U','L','R','D','L','U','U','R','R','R'},
};
int count = 0;
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++){
SetZero(t);
if(check(i,j,dir)) count++;
}
}
System.out.println(count);
}
private static void SetZero(int[][] t2) {
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
t[i][j]=0;
}
private static boolean check(int i,int j,char[][]dir) {
if(i<0||i>9||j<0||j>9) return true;
else if(t[i][j]==1) return false;
else {
t[i][j] = 1;
switch(dir[i][j]){
case 'U':
return check(i-1, j, dir);
case 'D' :
return check(i+1, j, dir);
case 'L' :
return check(i, j-1, dir);
case 'R' :
return check(i, j+1, dir);
default :
return false;
}
}
}
}