HDU 1548 A strange lift(bfs)

原创 2015年07月07日 23:27:33

最近在搞搜索算法

刚开始起步

要从基础开始额

各处找水题

偶然发现此题不错

做起来很有感觉  =_=


题意是一个电梯

然后&*%¥%#@!%&*%¥

呵呵哒,英语渣

从输入数据开始说吧

n层楼里有个电梯,每层电梯只能上升fi层或者下降fi层

现在你在a层,你想去b层,问需要按电梯几次


不少人是用最短路做的

可这不是赤裸裸的广搜吗 =_=

code:

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int floor[201],flag[201];
int a,b;
void bfs(int start,int end)
{
    queue<int> q;
    q.push(start);
    int t;
    while(!q.empty())
    {
        t=q.fronr();
        q.pop();
        if(t==end)
            break;
        int next=t+floor[t];<span style="white-space:pre">			</span>//上升,next为上升后所在第几层
        if(next>=1&&next<=end&&flag[next]==0)
        {
            q.push(next);
            flag[next]=flag[t]+1;
        }
        next=t-floot[t];<span style="white-space:pre">			</span>//下降,next为下降后所在第几层
        if(next>=1&&next<=end&&flag[next]==0)
        {
            q.push(next);
            flag[next]=flag[t]+1;
        }
    }
    if(t!=end)
        flag[b]=-1;
}
int main()
{
    int n,i;
    while(scanf("%d",&n),n)
    {
        scanf("%d %d",&a,&b);
        for(i=1;i<=n;i++)
            scanf("%d",&floor[i]);
        memset(flag,0,sizeof(flag));
        bfs(a,b);
        printf("%d\n",flag[b]);
    }
    return 0;
}

我也是受一个大神启发,flag的作用不只是标记,还记录当前的操作次数

还要注意当不能从a到b的时候要输出-1


每学习一个算法,都对我有很大启发

惊叹原来还可以这样

怀中敬佩之情去钻研一个个算法

乐在其中

版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU1548:A strange lift(Dijkstra && BFS)

Problem Description There is a strange lift.The lift can stop can at every floor as you want, and t...
  • libin56842
  • libin56842
  • 2013年11月25日 19:56
  • 5647

bfs入门 hdu 1548 a strange lift

和一般图上的bfs有些不同,思路上稍微有点复杂,说一下自己的理解吧。对于某种选择到达的状态如果之前已经到达过则这种选择是不应该选的,对应到一般图上如果该节点已被访问则不把该点写入队列。这点明白了,这题...
  • define_danmu_primer
  • define_danmu_primer
  • 2015年08月19日 11:45
  • 213

杭电 HDU ACM 1548 A strange lift(简单广搜)

C - A strange lift Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u Su...
  • lsgqjh
  • lsgqjh
  • 2015年07月31日 10:00
  • 887

hdu1548 A strange lift(bfs)

A B C D E F G C - A strange lift Crawling in process... Crawling failed Time Limit:100...
  • su20145104009
  • su20145104009
  • 2016年05月30日 17:08
  • 3708

A strange lift(简单BFS)

A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...
  • Enjoying_Science
  • Enjoying_Science
  • 2014年10月04日 18:00
  • 578

hdu 1548 A strange lift (BFS、Dijkstra)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 题意:        有一个特别的电梯,第i层有一个对应的数字ki, 对于第i层按上升...
  • yew1eb
  • yew1eb
  • 2013年07月18日 20:48
  • 1577

hdu 1548 A strange lift(BFS)

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1548 题目大意: N个数从A层开始到B层 N层依次能上升或者下降的层数 ...
  • sunshine_YG
  • sunshine_YG
  • 2015年10月21日 22:29
  • 241

hdu 1548 A strange lift(bfs)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1548 解题思路: 和hdu2717很相似,也是按题意来,直接搜就行了。。。 AC代码: #incl...
  • piaocoder
  • piaocoder
  • 2015年08月10日 15:06
  • 184

HDU 1548 A strange lift (bfs / 最短路)

A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...
  • badguy_gao
  • badguy_gao
  • 2017年06月05日 18:01
  • 50

hdu 1548 A strange lift (bfs、最短路)

题意:在电梯的第i层只能上ki层或下ki层,但是不能到达低于一层或高于n层, 给定起点与终点,要求出最少要按几次键 分析:这题可以用BFS从上下两个方向搜索,也可以用最短路径 若用最短路,则应将邻接矩...
  • acm_code
  • acm_code
  • 2014年07月23日 20:09
  • 763
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1548 A strange lift(bfs)
举报原因:
原因补充:

(最多只允许输入30个字)