Maze Stretching--HOJ 11879
2010-09-23 08:18
405 查看
1、题目类型:迷宫、BFS。
2、解题思路:(1)cin.getline()接收迷宫;(2)BFS搜索其开始位置 'S' 和其结束位置 'E' 并记录两者间的总步数、横向移动步数;(3)根据搜索答案判断其是否满足题意,满足输出结果。
3、注意事项:注意一定存在最短路径、找到符合题意答案即输出。
4、实现方法:
2、解题思路:(1)cin.getline()接收迷宫;(2)BFS搜索其开始位置 'S' 和其结束位置 'E' 并记录两者间的总步数、横向移动步数;(3)根据搜索答案判断其是否满足题意,满足输出结果。
3、注意事项:注意一定存在最短路径、找到符合题意答案即输出。
4、实现方法:
#include<iostream> #include<queue> #include<string> using namespace std; struct Point { int x,y; int step; int ver; }; Point S,E; string map[120]; char ch[120]; double L; int n,m; int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}}; void Init() { int i,j; cin>>L>>n; m=120; cin.getline(ch,sizeof(ch)); for(i=0;i<n;i++) { map[i]=""; { cin.getline(ch,sizeof(ch)); map[i]=ch; if(m>map[i].length()) m=map[i].length(); } } for(i=0;i<n;i++) { for(j=0;j<map[i].length();j++) { if(map[i][j]=='S') { S.x=i; S.y=j; } if(map[i][j]=='E') { E.x=i; E.y=j; } } } } void Solve(int ca) { queue<Point> Q; int vis[120][120]={0}; int i,x,y,flag=0; S.ver=0; S.step=0; Q.push(S); while(!Q.empty()) { Point tmp=Q.front(); Q.pop(); for(i=0;i<4;i++) { x=tmp.x+dir[i][0]; y=tmp.y+dir[i][1]; if(x>=0 && x<n && y>=0 && y<m && !vis[x][y] && map[x][y]!='#') { Point p; if(map[x][y]=='E') { if(i==0||i==2) p.ver=tmp.ver+1; else p.ver=tmp.ver; p.step=tmp.step+1; if(L<p.step-p.ver) continue; double ans=L-p.step+p.ver; if(ans>=0) ans=ans/p.ver; else ans=(-ans)/p.ver; ans*=100; printf("Case #%d: %.3lf%%\n",ca,ans); return ; } p.x=x; p.y=y; p.step=tmp.step+1; if(i==0||i==2) p.ver=tmp.ver+1; else p.ver=tmp.ver; Q.push(p); vis[x][y]=1; } } } } int main() { int i,T; cin>>T; for(i=1;i<=T;i++) { Init(); Solve(i); } return 0; }
相关文章推荐
- Hoj 2608 Assemble
- HOJ 题目分类 by wywcgs
- HOJ 动态规划 AC代码包
- uva 11879 Multiple of 17
- poj 3897 Maze Stretching 二分+A*搜索
- [hoj 1225]Supermarket代码阅读记录
- Hoj 1086 Don't Get Rooked
- HOJ 1017 Joseff's problem II
- HOJ 3140 乌龟棋
- 搜索 HOJ 1838 Traffic Jam
- 搜索 HOJ 1140 The Game
- (中等) 搜索 HOJ 1049 sticks
- 搜索 HOJ 1266 Phone Home
- [数论]HOJ 2901 Calculation 快速幂
- HOJ 1003 Max Sum 解题报告
- HOJ 1760 最大子段和
- 【hoj】1030 Labyrinth
- HOJ 12825 Cup of Cowards(搜索)
- HOJ 12899 A+B Bucharest, Romania 2013
- HOJ 1007 SPF