hdu 1242BFS 不过+DFS过
来源:互联网 发布:nginx安装和配置 编辑:程序博客网 时间:2024/05/04 00:29
/*拿道题就BFS,结果与题意不符,后改DFS
#include<iostream>
#include<queue>
using namespace std;
struct st{
int x;
int y;
int step;
};
char a[201][201];
int b[201][201];
int c[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int sx,sy,ex,ey;
int m,n;
bool k;
void bfs(){
// memset(b,0,sizeof(b));
queue <st> Q;
st q,s;
q.x=sx;q.y=sy;q.step=0;
b[sx][sy]=1;
Q.push(q);
while(!Q.empty()){
s=Q.front();
if(s.x==ex&&s.y==ey){
k=1;
cout<<s.step<<endl;
return ;
}
Q.pop();
int i;
for(i=0;i<4;i++){
q.x=s.x+c[i][0];q.y=s.y+c[i][1];
if(q.x<0||q.y<0||q.x>=m||q.y>=n) continue;
if(b[q.x][q.y]==1) continue;
if(a[q.x][q.y]=='.') q.step=s.step+1;
else if(a[q.x][q.y]=='x') q.step=s.step+2;
Q.push(q);b[q.x][q.y]=1;
}
}
return ;
}
int main(){
freopen("1.txt","r",stdin);
freopen("2.txt","w",stdout);
while(cin>>m>>n){
int i,j;k=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
cin>>a[i][j];
if(a[i][j]=='.'||a[i][j]=='x') b[i][j]=0;
else if(a[i][j]=='#') b[i][j]=1;
else if(a[i][j]=='r') {sx=i;sy=j;}
else if(a[i][j]=='a') {ex=i;ey=j;}
}
}
bfs();
if(k==0) cout<<"Poor ANGEL has to stay in the prison all his life. /n";
}
return 0;
}*/
***************************************************
#include<iostream>
using namespace std;
char a[201][201];
int c[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int sx,sy,ex,ey;
bool l;int m,n;
int minn=100000;
void dfs(int x,int y,int t){
int q,p;
// if(x<0||y<0||x>=m||y>=n) return ;
if(x==ex&&y==ey){
l=1;
if(minn>t) minn=t;
return;
}
int i;
for(i=0;i<4;i++){
q=x+c[i][0];p=y+c[i][1];
if(a[q][p]!='#'&& p >= 0 && p < n && q >= 0 && q < m){
if(a[q][p]=='x'){
a[q][p]='#';
dfs(q,p,t+2);
a[q][p]='x';
}
else {//if(a[q][p]=='.'||a[q][p]=='r')注意边界!!!2啊!
a[q][p]='#';
dfs(q,p,t+1);
a[q][p]='.';
}
}
}
return ;
}
int main(){
freopen("1.txt","r",stdin);
freopen("2.txt","w",stdout);
while(cin>>m>>n){
int i,j;l=0;minn=1000000;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
cin>>a[i][j];
if(a[i][j]=='a')
{ sx=i;sy=j;}
if(a[i][j]=='r')
{ ex=i;ey=j;}
}
}
a[sx][sy]='#';
dfs(sx,sy,0);
if(l) cout<<minn<<endl;
else cout<<"Poor ANGEL has to stay in the prison all his life."<<endl;
}
fclose(stdout);
fclose(stdin);
return 0;
}
- hdu 1242BFS 不过+DFS过
- HDU 1175 连连看(bfs+dfs 水过)
- HDU 1242 -- Rescue (bfs,dfs)
- HDU 1242 Rescue(DFS or BFS)
- 模板:HDU 1242: Rescue: (BFS DFS)
- HDU 1242 Rescue (BFS or DFS)
- HDU 1983 BFS + DFS
- HDU 1044 BFS + DFS
- hdu (4414)(BFS+DFS)
- hdu 1044 bfs dfs
- hdu 1044 DFS + BFS
- hdu 4101 DFS+BFS
- HDU 1983 DFS+BFS
- HDU 1044 BFS+DFS
- HDU 1044(bfs+dfs)
- hdu 1983(bfs+dfs)
- hdu 1044 (bfs+dfs)
- HDU 1983 BFS&&DFS
- 000
- 删除重复数据的sql方法
- Linux超级用户root口令忘记怎么办?
- Open drain & push pull,IO口驱动,集电极开路
- 参考文献格式
- hdu 1242BFS 不过+DFS过
- 云计算服务商到底有多少收入?
- 中国人最常写错的100个字,你知道多少?
- ON_PAINT
- 想做的事就去做----不要人在天堂,錢在銀行∼要及時行樂喔!共勉之!
- Linux 汇编语言开发指南
- c++异常机制
- Algorithm: The implementation of Trie Tree (C++)
- mysql