题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=1548

题意:电梯每层有一个数,例如第n层有个数k,

那么这一层只能上k层或下k层,但是不能低于一层或高于n层,

给定起点与终点,要求出最少要按几次键

我的思路:这题可以用bfs或者用最短路(dijsktra)

bfs

AC代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

int n,a,b,dis[210],vis[210];

struct node
{
int now;
int step;
};

int main(void)
{
int bfs();
int i;
while(scanf("%d",&n)==1&&n)
{
memset(vis,0,sizeof(vis));
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
scanf("%d",dis+i);
printf("%d\n",bfs());
}
return 0;
}

int bfs()
{
int i;
queue<node> q;
vis[a]=1;
node start,next;
start.now=a;
start.step=0;
q.push(start);
while(!q.empty())
{
node s=q.front();
q.pop();
if(s.now==b)
return s.step;
for(i=0;i<2;i++)
{
if(0==i)
next.now=s.now+dis[s.now];
else
next.now=s.now-dis[s.now];
if(!vis[next.now]&&next.now>=1&&next.now<=n)
{
if(next.now==b)
return s.step+1;
vis[next.now]=1;
next.step=s.step+1;
q.push(next);
}
}
}
return -1;
}

最短路算法

#include<stdio.h>
#include<string.h>

int n,a,b,dis[210],vis[210],map[210][210];
const int Max = 0x3f3f3f3f;

int main(void)
{
int i,j,k,l;
while(scanf("%d",&n)==1&&n)
{
memset(vis,0,sizeof(vis));
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i!=j)
map[i][j]=Max;
else
map[i][j]=0;
}
}
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
{
scanf("%d",dis+i);
if(i-dis[i]>=1&&i+dis[i]<=n)
map[i][i-dis[i]]=map[i][i+dis[i]]=1;
else if(i-dis[i]>=1)
map[i][i-dis[i]]=1;
else
map[i][i+dis[i]]=1;
}
for(i=1;i<=n;i++)
dis[i]=map[a][i];
for(i=1;i<=n;i++)
{
l=Max;
for(j=1;j<=n;j++)
{
if(!vis[j]&&l>dis[j])
{
k=j;
l=dis[j];
}
}
if(l==Max) break;
vis[k]=1;
for(j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]>dis[k]+map[k][j])
dis[j]=dis[k]+map[k][j];
}
}
if(dis[b]==Max)
printf("-1\n");
else
printf("%d\n",dis[b]);
}
return 0;
}

HDU1548:A strange lift(Dijkstra或BFS)的更多相关文章

  1. HDU 1548 A strange lift(Dijkstra,简单BFS)

    题目大意: 电梯有两个选项向上或向下,每层楼有一个参数ki,代表电梯可以再该楼层的基础上向上或向下移动ki层,限制条件是向上不能超过楼层总数n,向下不能少于一.输入总层数n和当前所在层数以及目标层数, ...

  2. HDU1548——A strange lift(最短路径:dijkstra算法)

    A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...

  3. HDU-1548 A strange lift(单源最短路 或 BFS)

    Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...

  4. HDU1548:A strange lift

    A strange lift Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  5. hdu 1548 A strange lift 宽搜bfs+优先队列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 There is a strange lift.The lift can stop can at ...

  6. Hdu1548 A strange lift 2017-01-17 10:34 35人阅读 评论(0) 收藏

    A strange lift Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  7. HDU 1548 A strange lift(最短路&&bfs)

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

  8. HDU 1548 A strange lift (Dijkstra)

    A strange lift http://acm.hdu.edu.cn/showproblem.php?pid=1548 Problem Description There is a strange ...

  9. hdu1548 A strange lift(bfs 或Dijkstra最短路径)

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #d ...

随机推荐

  1. [转] Linux下移动virtualbox虚拟硬盘丢失eth0

    1.遇到什么的问题(What)      在新的virtualbox虚拟机上挂上曾使用过的虚拟硬盘,在启动的时候,发现找不到网卡eth0, 在输入ifconfig –a的时候,也没有任何Ethnet的 ...

  2. learn from 德国老师

    最近在跟踪德国来的一个老师学android,感触比较深的一点就是他对细节的理解,一个源代码他可以从第一行解释到最后一行,知道每一行的意思和用法,这可能就是德国人对细节的追求. 刚才想了一下写代码确实应 ...

  3. [zoj解题] 1203

    #include <stdio.h> #include <stdlib.h> #include <math.h> #define MAXN 100 #define ...

  4. CodeForces 621A Wet Shark and Odd and Even

    水题 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #inclu ...

  5. python redis list操作

    LPUSH list_name value [value ...] Prepend one or multiple values to a list 从左侧插入值,最早插入的值在最右边 LPUSHX ...

  6. (简单) FZU 2150 Fire Game ,Floyd。

    Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board ...

  7. runtime - associated(关联)

    category和associative作为objective-c的扩展机制的两个特性,category用来扩展类的方法,associative可以用来扩展类的属性.使用associative需要导入 ...

  8. BZOJ 2209: [Jsoi2011]括号序列 [splay 括号]

    2209: [Jsoi2011]括号序列 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1111  Solved: 541[Submit][Statu ...

  9. Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(三)

    继续, 上文提到的是用BUILD_STATIC_JAVA_LIBRARY在Android4.2源码下编译出来的jar包可以在Eclipse(SDK版本4.1)上使用, 找来Android6.0的源码, ...

  10. X-002 Exyson4412芯片启动过程分析

    移植u-boot到FriendlyARM Tiny4412开发板上,首先我们需要对Samsung Exyson4412芯片的启动方式.系统时钟初始化.串口初始化.内存初始化以及开发板的内存地址空间分配 ...