题目链接

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. base64编码的图片字节流存入html页面中的显示

    在图片数据中加载到一个img标签,并如下处理 <img src="data:image/png;base64,...

  2. Android studio怎么创建shape的XML文件

    drawable里面 new一个 Drawable resource xml 一般打开是selector ,把selector改成shape就OK了

  3. Python 之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    一.Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负债.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  4. log4j配置日志系统

    1. lib里加入3个包 slf4j-api, slf4j-log4j12, log4j 2. 在src下 创建log4j.properties ### direct log messages to ...

  5. mtp

    http://www.android.gs/mount-google-nexus-4-mtp-sd-card-on-ubuntu-and-other-linux-computers/ https:// ...

  6. locks

    grep 'parking to wait for' gs2_jstack_141203.txt |  uniq -c | sort -n查看哪个锁出现次数最多 http://blog.csdn.ne ...

  7. web项目编译出错时,原因之一,可能是build path 中order and Export引起

    build path中的order and Export,如果两个libarary中有相同功能的jar包,则编译器会选择顺序在前的jar包中相应的类作为编译所需. 所以,当项目jar包较多的时候,如果 ...

  8. Jenkins启动、停止脚本

    1.jenkins下载地址:http://pan.baidu.com/s/1o79ZRzs 2.创建shell脚本,如:jenkins.sh #!/bin/bash pid=`ps -ef | gre ...

  9. cronolog 对 tomcat 7 进行日志切割

    一.安装 软件 cronolog-1.6.2.tar.gz tar zxvf cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure && ...

  10. Shell实例----------从文件夹里面多个文件里面查找指定内容

    脚本执行方式:脚本名称  目录的路径 要查找的内容 #!/bin/bash num=`ls $1 |tr ' ' '^$'|wc -l` for i in `seq 1 $num` do file_n ...