您的位置:首页 > 产品设计 > UI/UE

hdu 1242 Rescue

2015-03-28 23:26 211 查看
深搜不解释,要注意公主的朋友不只一个,然后测试数据有多组

#include<iostream>
#include<cstring>
using namespace std;
int n,m;
int ax,ay;
int re=1<<30;
char mapp[200+5][200+5];
int visit[200+5][200+5];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void dfs(int x,int y,int t)
{
visit[x][y]=1;
if(mapp[x][y]=='r'){re=min(re,t);return;}
for(int i=0;i<4;i++)
{
int xx,yy;
xx=x+dir[i][0];yy=y+dir[i][1];
if(xx<0||xx>=n||yy<0||yy>=m||visit[xx][yy]||mapp[xx][yy]=='#') {continue;}
if(mapp[xx][yy]=='.') dfs(xx,yy,t+1),visit[xx][yy]=0;
else if(mapp[xx][yy]=='x') dfs(xx,yy,t+2),visit[xx][yy]=0;
else if(mapp[xx][yy]=='r') dfs(xx,yy,t+1),visit[xx][yy]=0;
}
visit[x][y]=0;
}
int main()
{
while(cin>>n>>m)
{
re=1<<30;
memset(visit,0,sizeof(visit));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>mapp[i][j];
if(mapp[i][j]=='a') ax=i,ay=j;
}
}
dfs(ax,ay,0);
if(re!=(1<<30)) cout<<re<<endl;
else cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: