走迷宫(蓝桥杯)


public class Main {
    public static int count=0;
    static String maze[]= {"UDDLUULRUL","UURLLLRRRU","RRUURLDLRD","RUDDDDUUUU","URUDLLRRUU","DURLRLDLRL"
            ,"ULLURLLRDU","RDLULLRDDD","UUDDUDUDLL","ULRDLUURRR"};
    
    static int visit[][]=new int[10][10];
   
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        /* for(int i=0;i<10;i++){
                for(int j=0;j<10;j++){
                    visit[i][j]=0;
                }
            }
          */ 
        
        for(int i=0;i<10;i++){
            for(int j=0;j<10;j++){
                for(int k=0;k<10;k++){
                    for(int l=0;l<10;l++){
                        visit[k][l]=0;   //每次都要消除visit
                    }
                }
                dfs(i,j);
            }
        }
    System.out.println(count);
    }
     public static void dfs(int n,int m){
         if(n<0||n>9||m<0||m>9){
             count++;
             return;
         }
         if(visit[n][m]==1){
             
             return;
         }
         visit[n][m]=1;
        /* switch(maze[n].charAt(m)){
         case 'U':
             dfs(n-1,m);break;
         case 'D':
             dfs(n+1,m);break;
        case 'L':
                dfs(n,m-1);break;
        case 'R':
                dfs(n,m+1);break;
            default:
                break;
         }*/
         if(maze[n].charAt(m)=='U') {
             dfs(n-1,m);
         }
         else if(maze[n].charAt(m)=='D') {
             dfs(n+1,m);
         }
         else if(maze[n].charAt(m)=='L') {
             dfs(n,m-1);
         }
         else if(maze[n].charAt(m)=='R') {
             dfs(n,m+1);
         }
         return;
        }
}


public class Main {
    public static int count=0;
    static String maze[]= {"UDDLUULRUL","UURLLLRRRU","RRUURLDLRD","RUDDDDUUUU","URUDLLRRUU","DURLRLDLRL"
            ,"ULLURLLRDU","RDLULLRDDD","UUDDUDUDLL","ULRDLUURRR"};
    
    static int visit[][]=new int[10][10];
   
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        /* for(int i=0;i<10;i++){
                for(int j=0;j<10;j++){
                    visit[i][j]=0;
                }
            }
          */ 
        
        for(int i=0;i<10;i++){
            for(int j=0;j<10;j++){
                for(int k=0;k<10;k++){
                    for(int l=0;l<10;l++){
                        visit[k][l]=0;
                    }
                }
                dfs(i,j);
            }
        }
    System.out.println(count);
    }
     public static void dfs(int n,int m){
         while(true){
         if(n<0||n>9||m<0||m>9){
             count++;
             break;
         }
         if(visit[n][m]==1){
             
             break;
         }
         visit[n][m]=1;
         switch(maze[n].charAt(m)){
         case 'U':
             n=n-1;break;
         case 'D':
             n=n+1;break;
        case 'L':
                m=m-1;break;
        case 'R':
                m=m+1;break;
            default:
                break;
         
         }
         }
}
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值