HDU/HDOJ 1548 A strange lift BFS,DFS
来源:互联网 发布:人工智能技术发展方向 编辑:程序博客网 时间:2024/05/01 00:45
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1548
我用两种方法做,DFS没有AC,不知道错在哪里,贴出来有大神撸过不吝赐教,第二种经典方法BFS过了,76MS 360k,思路都很简单,也是一道很规范的广度优先搜索。
代码:
BFS:
#include <iostream>#include <queue>using namespace std;int n,a,b;bool visit[210];int ki[210];struct node{int x,step;}p,q;queue<node> Q;int bfs(){while(!Q.empty())Q.pop();p.x=a;p.step=0;Q.push(p);visit[p.x]=1;if(p.x==b)return 0;while(!Q.empty()){p=Q.front();Q.pop();if(p.x==b)return p.step;for(int i=0;i<2;i++){if(i==0){q.x=p.x+ki[p.x];if(q.x>n)continue;if(visit[q.x])continue;q.step=p.step+1;visit[q.x]=1;Q.push(q);}if(i==1){q.x=p.x-ki[p.x];if(q.x<1)continue;if(visit[q.x])continue;q.step=p.step+1;visit[q.x]=1;Q.push(q);}}}return -1;}int main(){while(cin>>n){if(n==0)break;cin>>a>>b;for(int i=1;i<=n;i++)cin>>ki[i];memset(visit,0,sizeof(visit));cout<<bfs()<<endl;}return 0;}
DFS:
#include <iostream>#include <string>#include <cstdio>#include <cmath>#include <vector>#include <algorithm>#include <sstream>#include <cstdlib>#include <fstream>#include <queue>using namespace std;int n,a,b,cnt,flag;int cmin;bool visit[210];int ki[210];void dfs(int x){if(x==b){flag=1;if(cnt<cmin)cmin=cnt;return ;}if(flag)return ;if(x+ki[x]<=n){if(!visit[x+ki[x]]){cnt++;visit[x+ki[x]]=1;dfs(x+ki[x]);visit[x+ki[x]]=0;cnt--;}}if(x-ki[x]>=1){if(!visit[x-ki[x]]){cnt++;visit[x-ki[x]]=1;dfs(x-ki[x]);visit[x-ki[x]]=0;cnt--;}}}int main(){//ifstream fin;//fin.open("data1.txt");while(cin>>n){if(n==0)break;cin>>a>>b;for(int i=1;i<=n;i++)cin>>ki[i];cnt=0;cmin=999999;flag=0;memset(visit,0,sizeof(visit));visit[a]=1;dfs(a);if(flag)cout<<cmin<<endl;else cout<<-1<<endl;}return 0;}
- HDU/HDOJ 1548 A strange lift BFS,DFS
- hdoj 1548 A strange lift(bfs)
- HDOJ 1548 A strange lift (bfs)
- HDOJ 1548 A strange lift (BFS)
- hdoj 1548 A strange lift (BFS)
- HDOJ 1548 A strange lift (BFS)
- hdu 1548 A strange lift BFS 解法
- hdu 1548 A strange lift (bfs)
- hdu 1548 A strange lift (bfs)
- 【BFS/Dijkstra】hdu 1548 A Strange Lift
- hdu 1548 A strange lift (BFS、Dijkstra)
- hdu 1548 A strange lift (bfs)
- HDU 1548 A strange lift(BFS)
- hdu 1548 A strange lift(搜索:BFS)
- hdu 1548 A strange lift(水题,bfs)
- HDU--1548:A strange lift (BFS)
- HDU 1548 A strange lift (BFS)
- hdu 1548 A strange lift(bfs)
- FME 安装破解及与ArGIS冲突的解决方法
- OpenCV反向投影cvCalcBackProject的示例,用图像中某中颜色的区域
- 经典的2个C语言面试题目
- Flex之旅--Flex+BlazeDS+Spring整合
- ORACLE中的ROW_NUMBER函数
- HDU/HDOJ 1548 A strange lift BFS,DFS
- 供应商导入
- 删除文件
- QThread 使用探讨
- 牛逼正则验证url
- OpenCV直方图用法示例
- .aidl文件注释的奇怪问题
- android开源项目(一) AndroidSideMenu
- ORACLE临时表GLOBAL TEMPORARY TABLE