赞
踩
迷宫地图如下:
------------
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
------------
请你计算一下,最后,有多少玩家会走出迷宫?
而不是在里边兜圈子。
- package easy;
-
- import java.util.Scanner;
-
- public class Number_n {
-
- static String data[] = new String[20];
- static boolean visit[][] = new boolean[20][20];
- static int ans = 0;
-
- public static void dfs(int i,int j){
- if(i < 0 || i > 9 || j < 0 || j > 9){ //只要走出了边界,就是走出了迷宫
- //不要思维定势,认为只有走到右下角才算走出迷宫
- ans++;
- return;
- }
- if(visit[i][j]==true) //只要走过这个点,就代表这条路走不通了,会陷入循环
- return;
-
- visit[i][j]=true;
-
- if(data[i].charAt(j)=='U')
- dfs(i-1,j);
- else if(data[i].charAt(j)=='D')
- dfs(i+1,j);
- else if(data[i].charAt(j)=='R')
- dfs(i,j+1);
- else if(data[i].charAt(j)=='L')
- dfs(i,j-1);
- }
-
- public static void clear(){ //每从一个点出发,都要将visit清空一遍
- for(int i = 0;i < 10;i++)
- for(int j = 0;j < 10;j++)
- visit[i][j]=false; //最初情况所有点都未被遍历
- }
-
- public static void main(String[] args) {
- Scanner input = new Scanner(System.in);
- data[0] = "UDDLUULRUL";
- data[1] = "UURLLLRRRU";
- data[2] = "RRUURLDLRD";
- data[3] = "RUDDDDUUUU";
- data[4] = "URUDLLRRUU";
- data[5] = "DURLRLDLRL";
- data[6] = "ULLURLLRDU";
- data[7] = "RDLULLRDDD";
- data[8] = "UUDDUDUDLL";
- data[9] = "ULRDLUURRR";
-
- for(int i = 0;i < 10;i++)
- for(int j = 0;j < 10;j++){
- clear();
- dfs(i,j);
- }
-
- System.out.println(ans);
- }
-
- }
1、在此题中,只要走出了迷宫边界,就算走出迷宫,因为没有设置固定出口,因此不能思维定势认为只有走到右下角才算走出迷宫。
2、能走出迷宫——>不兜圈子——>不走重复走过的点
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。