HDU1548:A strange lift(Dijkstra或BFS)
题目链接
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)的更多相关文章
- HDU 1548 A strange lift(Dijkstra,简单BFS)
题目大意: 电梯有两个选项向上或向下,每层楼有一个参数ki,代表电梯可以再该楼层的基础上向上或向下移动ki层,限制条件是向上不能超过楼层总数n,向下不能少于一.输入总层数n和当前所在层数以及目标层数, ...
- HDU1548——A strange lift(最短路径:dijkstra算法)
A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...
- 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 ...
- HDU1548:A strange lift
A strange lift Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Tota ...
- 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 ...
- 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 ...
- HDU 1548 A strange lift(最短路&&bfs)
A strange lift Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1548 A strange lift (Dijkstra)
A strange lift http://acm.hdu.edu.cn/showproblem.php?pid=1548 Problem Description There is a strange ...
- hdu1548 A strange lift(bfs 或Dijkstra最短路径)
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #d ...
随机推荐
- 用FusionChartsFree做饼状图、柱状图、折线图的实例
1.先来看看要进行表现的页面:myChart.jsp <%@ page language="java" contentType="text/html; charse ...
- 加工生产调度(prod)
加工生产调度(prod) 题目描述 有n个部件需在A.B机器上加工,每个工件都必须经过先A后B两道工序. 已知:部件i在A.B机器上的加工时间分别为ai,bi. 问:如何安排n个工件的加工顺序,才能使 ...
- Utils 工具 推送
work_weipa_百度云推送 2014-09-05 17:55 7人阅读 评论(0) 收藏 举报 问题:怎么实现消息推送? 回答:下载sdk,根据文档操作即可 资料:http://develope ...
- PAT (Advanced Level) 1054. The Dominant Color (20)
简单题 #include<cstdio> #include<cstring> #include<cmath> #include<vector> #inc ...
- ecstore中kvstore之memcached
memcached的安装 详细见 http://blog.csdn.net/motian06/article/details/17558831 memcached扩展的安装 详细见 http://bl ...
- 在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互
Android的私钥和信任证书的格式必须是BKS格式的,通过配置本地JDK,让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库 服务端: Java代码 ...
- 解决airserver在Windows下安装失败的问题
airserver 可以将iphone 实时投影到mac 和 pc.在mac上安装非常简单.但是在Windows上安装时会有很多问题.之前我电脑安装很快就完成了(因为我之前已经在不知情的前提先事先装过 ...
- Cocos2dx 学习笔记整理----在项目中使用图片(二)
之前了解了一种比较简单的图片的使用方式, 今次来了解稍微复杂一点的图片使用方式,plist+png. 这里要用到之前提到的Texture Packer. Texture Packer是一款图片打包工具 ...
- 系统管理员必须掌握的20个Linux监控工具
需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧.大多数Linux发行版本都装备了大量的监控工具.这些工具提供了能用 作取得相关信息和系统活动的量度指标.你能使用这些工具发现造成 ...
- AWK用法入门详解
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...