您的位置:首页 > 其它

HDU 1010 Tempter of the Bone(DFS)

2015-10-12 16:27 351 查看
题意:判断,能否从S到D,恰好在T时间到。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=10;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
char map[maxm][maxm];
int vis[maxm][maxm];
int x1,y1;
int m,n,T;
int ok;
void dfs(int x,int y,int step)
{
if(ok||step>T)
{
return;
}
else if(map[x][y]=='D'&&step==T)
{
ok=1;
return;
}
for(int i=0;i<4;i++)
{
int sx=x+dir[i][0];
int sy=y+dir[i][1];
if(sx>=0&&sx<m&&sy>=0&&sy<n&&!vis[sx][sy]&&map[sx][sy]!='X')
{
vis[sx][sy]=1;
dfs(sx,sy,step+1);
vis[sx][sy]=0;
}
}
}
int main()
{
while(scanf("%d%d%d",&m,&n,&T)!=EOF&&(m+n+T))
{
memset(vis,0,sizeof(vis));
for(int i=0;i<m;i++)
{
scanf("%s",map[i]);
for(int j=0;j<n;j++)
{
if(map[i][j]=='S')
{
x1=i;
y1=j;
}
}
}
ok=0;
vis[x1][y1]=1;
dfs(x1,y1,0);
if(ok)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: