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