有一个N行M列由单元格组成的迷宫.迷宫中埋藏有宝物,每一个单元格可能为空地,为障碍物,为宝藏.现在请你写一个程序求从起点到宝藏的最短步数.
输入格式:第一行输入N M表示地图的行和列.后面N行输入M个0 或1,0表示空地,1表示障碍物.最后一行输入4个数,前俩个是起点的xy坐标,后俩个是终点的xy坐标.
#includeint a[100][100],N,M,step =0,X,Y,min=500,book[100][100];//用数组a存储地图,数组book标记,min记录最小步数
void xunbao(int x,int y,int step)
{int x1,y1,b[4][2]={{1,0},{0,1},{-1,0},{1,0}};//四种走法上下左右,顺序无所谓
if(x==X&&y==Y){//判断是否走到宝藏处
if (step min=step;//更新min
return;
}
}
for(int i=0;i<4;i++){//枚举四种走法
x1=x+b[i][0];
y1=y+b[i][1];
if(x1<0||y1<0||x1>M-1||y1>N-1){//判断是否出界
continue;
}
if(a[x1][y1]==0&&book[x1][y1]==0){//判断是否有障碍物或者走过
book[x1][y1]=1;
xunbao(x1,y1,step+1);
book[x1][y1]=0;
}
}
return;
}
int main()
{int x,y;
scanf("%d%d",&N,&M);
for(int i=0;ifor(int j=0;j scanf("%d",&a[i][j]);
}
scanf("\n");
}
scanf("%d%d%d%d",&x,&y,&X,&Y);
xunbao(0,0,0);
printf("%d",min);
}可以自定义一个地图去验证代码的准确性
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧