华为机试【机器人走迷宫】

标题:机器人走迷宫 | 时间限制:1秒 | 内存限制:65536K | 语言限制: 不限 【机器人走迷宫】1、 房间由XY的方格组成,例如下图为64的大小。每一个方格以坐标(x,y)描述。 2、 机器人固定从方格(0,0)出发,只能向东或者向北前进。出口固定为房间的最东北角,如下图的方格(5,3)。用例保证机器人可以从入口走到出口。 3、 房间有些方格是墙壁,如(4,1),机器人不能经过那儿。 4、 有些地方是一旦到达就无法走到出口的,如标记为B的方格,称之为陷阱方格。 5、 有些地方是机器人无法到达的的,如标记为A的方格,称之为不可达方格,不可达方格不包括墙壁所在的位置。 6、 如下示例图中,陷阱方格有2个,不可达方格有3个。 7、 请为该机器人实现路径规划功能:给定房间大小、墙壁位置,请计算出陷阱方格与不可达方格分别有多少个。 以下代码将输入写死为题中用例

public static void main(String[] args){
          
   
        //机器人走迷宫
      int l=6;
      int d =4;
      int res[][]=new int[4][6];
      res[1][0]=1;res[1][1]=1;res[1][2]=1;res[2][4]=1;res[2][5]=1;
      isV(res, 0,res.length-1);
      int xianj =0;
      int bukeda =0;
      for(int i=0;i<res.length;i++){
          
   
          for (int j=0;j<res[0].length;j++){
          
   
              if(res[i][j]==3){
          
   
                  xianj++;
                  continue;
              }
              if(res[i][j]==0){
          
   
                  bukeda++;
                  continue;
              }
          }
      }
      System.out.print(xianj+" "+bukeda);
    }
    public static boolean  isV(int res[][],int x,int y){
          
   
        if(x>=res[0].length||y<0){
          
   
            return false;
        }
        if(x==res[0].length-1&&y==0){
          
   
            res[0][res[0].length-1]=2;
            return true;
        }
        if(res[y][x]==1){
          
   
            return false;
        }
        boolean s =isV(res, x + 1, y);
        boolean s1=isV(res, x, y - 1);
        boolean b1 = s || s1;
        if(b1==false){
          
   
            res[y][x]=3;
        }else {
          
   
            res[y][x]=2;
        }
         return b1;
    }
经验分享 程序员 微信小程序 职场和发展