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


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

惊叹原来还可以这样

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

乐在其中

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

相关文章推荐

hdu 1548 A strange lift(BFS)

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1548 题目大意: N个数从A层开始到B层 N层依次能上升或者下降的层数 ...

ACM-BFS之A strange lift——hdu1548

ACM BFS A strange lift hdu1548

HDU 1548 A strange lift(简单BFS)

http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange liftTime Limit: 2000/1000 MS (Java/Others)...

hdu1548A strange lift——最短路(迪杰斯特拉,spfa)。bfs(队列。数组)

Dijkstra+spfa+数组模拟队列+bfs,

HDU/HDOJ 1548 A strange lift BFS,DFS

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1548 我用两种方法做,DFS没有AC,不知道错在哪里,贴出来有大神撸过不吝赐教,第二种经典方...

hdu 1548 A strange lift(bfs)

A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

(step4.2.4)hdu 1548(A strange lift——BFS)

题目大意:第一行输入三个整数N,A,B。N表示这个电梯共有多少层(电梯有多少层???貌似这种说法有点错误。。但是意思你懂就是啦····),A表示起点(即你现在所在的层数), B表示终点(即,你想到达...

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...

HDU 1548 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...

[最短路径、BFS] HDU 1548 - A strange lift

题意简述: 第一行输入三个整数N、A、B,分别代表楼的层数,开始楼层和结束楼层。 第二行输入N个整数,代表在当前楼层只能向上或向下移动的层数。 问从楼层A到楼层B至少需要按几次?如果...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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