华为机试【机器人走迷宫】
标题:机器人走迷宫 | 时间限制: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;
}
