()HDU 1548 BFS 广度优先搜索
来源:互联网 发布:matlab矩阵叉乘 编辑:程序博客网 时间:2024/06/05 04:02
#include<stdio.h>#include<queue>using namespace std;int flag[210],data[210];//flag用来标记当前楼梯所在层数是否已经搜索过。如果已经搜索过就不再加入队列中。//避免重复的搜索int N,A,B;struct Node{ int cur;//当前所在的楼梯层 int num;//次数};//BFSint search(){ Node t,temp; t.cur=A; t.num=0; queue<Node> Q; Q.push(t); flag[A]=1; int up,down; while(!Q.empty()){ temp = Q.front(); Q.pop(); if(temp.cur==B)return temp.num;//到达目的,返回次数 up=temp.cur+data[temp.cur];//向上 if(flag[up]==0 && up<=N){//是否可以向上走 flag[up]=1; t.cur=up; t.num=temp.num+1; Q.push(t); } down=temp.cur-data[temp.cur];//向下 if(flag[down]==0 && down>0){//是否可以向下走 flag[down]=1; t.cur=down; t.num=temp.num+1; Q.push(t); } } return -1;//无法达到}int main(){ int i; while(scanf("%d",&N)&&N){ memset(flag,0,sizeof(flag)); scanf("%d%d",&A,&B); for(i=1;i<=N;i++){ scanf("%d",&data[i]); } printf("%d\n",search()); } return 0;}
#include<queue> #include<queue>
详细用法:
定义
详细用法:
定义
显示第一个元素 M.front()一个queue的变量 queue<Type> M
查看是否为空范例 M.empty() 是的话返回1,不是返回0;
从已有元素后面增加元素 M.push()
输出现有元素的个数 M.size()
显示最后一个元素 M.back()
清除第一个元素 M.pop()
查看是否为空范例 M.empty() 是的话返回1,不是返回0;
从已有元素后面增加元素 M.push()
输出现有元素的个数 M.size()
显示最后一个元素 M.back()
清除第一个元素 M.pop()
- ()HDU 1548 BFS 广度优先搜索
- 广度优先搜索(BFS)
- 广度优先搜索(BFS)
- 广度优先搜索(BFS)
- 广度优先搜索(BFS)
- BFS(广度优先搜索)
- HDU 1104 Remainder( BFS(广度优先搜索))
- HDU 1242 Rescue (BFS(广度优先搜索))
- HDU 1312 广度优先搜索(BFS)
- HDU 1429 广度优先搜索(BFS)
- HDU 1072 Nightmare 广度优先搜索(BFS)
- HDU 1175 广度优先搜索(BFS)
- BFS--- HDU 1240 Asteroids! 广度优先搜索
- HDU 1072 Nightmare(bfs 广度优先搜索)
- 搜索(广度优先搜索) BFS 1
- 搜索(广度优先搜索)BFS 2
- 广度优先搜索-BFS
- BFS广度优先搜索
- step by step 清理安装失败的oracle 10g RAC环境
- BOM简介
- 目标检测(Object Detection)原理与实现(四)
- object-c 网络(下)
- Moblin的工具:安装一个img试一试
- ()HDU 1548 BFS 广度优先搜索
- 内核术语--内核模式,用户模式,内核对象,内核调试,安全,注册表,Unicode,驱动
- 用VS的rc.exe编译Redasm的*.rc文件
- vc载入快捷菜单
- Oracle中的in和exists区别二
- javascript事件简介
- css3实现气泡效果的聊天框
- Category、Data、Type属性与intent-filter配置
- 几何画板演示全反射