/*
* 1035_3.cpp
*
* Created on: 2013年8月17日
* Author: Administrator
*/
#include <iostream>
using namespace std;
char map[11][11];
int num[11][11];
int n,m,k,t,loop;
bool overmap(int x , int y){
if( x < 1 || x > n || y < 1 || y > m){
return true;
}
return false;
}
void dfs(int x , int y){
if(overmap(x,y) || loop > 0){
if(loop > 0){
printf("%d step(s) before a loop of %d step(s)\n",t - loop , loop);
}else{
printf("%d step(s) to exit\n",t);
}
return ;
}
if(num[x][y] == 0){
num[x][y] = ++t;
}else{
loop = t - num[x][y] + 1;
}
switch(map[x][y]){
case 'N':--x;dfs(x,y);++x;break;
case 'S':++x;dfs(x,y);--x;break;
case 'W':--y;dfs(x,y);++x;break;
case 'E':++y;dfs(x,y);--y;break;
}
}
int main(){
while(scanf("%d %d %d",&n,&m,&k)!=EOF,n||m){
getchar();
int i,j;
t = 0;
loop = 0;
memset(num,0,sizeof(num));
memset(map,0,sizeof(map));
for(i = 1; i <= n ; ++i){
for( j = 1 ; j <= m ;++j){
scanf("%c",&map[i][j]);
}
getchar();
}
dfs(1,k);
}
}
hdu 1035(简洁版)
最新推荐文章于 2019-08-24 21:36:00 发布
本文介绍了一种使用C++实现的深度优先搜索算法,用于解决迷宫探索问题。通过定义迷宫地图、标记已访问路径并递归地探索未知区域,最终找到从起点到终点的路径。

3090

被折叠的 条评论
为什么被折叠?



