题目链接

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. Struts+Spring+Hibernate的Web应用执行过程

    struts1和spring有两种整合的方法  一种是action和spring bean映射:一种是将action交给spring初始化 第一种方式:访问.do的URL->tomcat接收到r ...

  2. Android三种左右滑动效果 手势识别

    Android三种左右滑动效果 手势识别(转)   手势识别 1.onCreate中添加GestureDetector mGestureDetector; //监听手势事件 mGestureDetec ...

  3. 3D动画效果照片墙demo

        <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF- ...

  4. PAT (Advanced Level) 1082. Read Number in Chinese (25)

    模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  5. Apache 隐藏入口文件 index.php

    新建 .htaccess文件至站点目录下,并写入如下代码: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQ ...

  6. JSTL c标签,fn标签,fmt标签 - 生活在爪洼岛上 - ITeye技术网站

    jstl是sun定义的标准,由apache实现,所以要下载jar包的话去apache,要看api文档的话,去sun,API文档在此:http://java.sun.com/products/jsp/j ...

  7. 外网主机访问虚拟机下的Web服务器_服务器应用_Linux公社-Linux系统门户网站

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  8. openstack controller ha测试环境搭建记录(十五)——创建实例

    # source demo-openrc.sh # ssh-keygenGenerating public/private rsa key pair.Enter file in which to sa ...

  9. CentOS 6.X x64 编译安装 Countly

    CentOS 6.X  x64 编译安装Countly 安装所需的软件 yum -y install supervisor ImageMagick sendmail 1. 安装 node.js wge ...

  10. fedora安装各种应用软件

    1 安装视频播放器 sudo yum install mplayer mplayer-gui 可以从命令行 和 gnome 中启动 2 音量调节 (1)使用 alsamixer alsamixer是一 ...