博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU_1548_A strange lift
阅读量:6626 次
发布时间:2019-06-25

本文共 1096 字,大约阅读时间需要 3 分钟。

题意:一部电梯(共top层),每一楼有一个数字k,在该层只能上k层或者下k层(up和down按钮),问从当前层到目标层按按钮的最小次数。

分析:广度优先搜索。

总结:初写BFS,仿照别人的代码,这方面要继续加强。

代码:

#include
#include
#include
#include
#include
using namespace std;int k[205],vis[205];int top,now,aim;struct node { int floor,step;;};bool judge(int a){ if(a>=1&&a<=top) return 1; return 0;}int BFS(node sta){ queue
q; node now,next; vis[sta.floor]=1; q.push(sta); while(!q.empty()) { now=q.front(); q.pop(); if(now.floor==aim) return now.step; for(int i=-1; i<=1; i+=2) { if(!vis[now.floor+i*k[now.floor]]&&judge(now.floor+i*k[now.floor])) { next.floor=now.floor+i*k[now.floor]; next.step=now.step+1; vis[now.floor+i*k[now.floor]]=1; q.push(next); } } } return -1;}int main(){ while(scanf("%d",&top)!=EOF&&top) { scanf("%d%d",&now,&aim); for(int i=1; i<=top; i++) scanf("%d",&k[i]); node a; a.floor=now; a.step=0; memset(vis,0,sizeof(vis)); int ans=BFS(a); printf("%d\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/jasonlixuetao/p/4987970.html

你可能感兴趣的文章
VHDL语言中buffer与inout的区别
查看>>
squid的正向代理和反向代理
查看>>
linux下命令与文件的查询
查看>>
SEO意识的网站设计:设计和SEO的完美结合可能么?
查看>>
IP 算法
查看>>
IBM_System_x3650服务器固件升级手顺
查看>>
awk单行脚本
查看>>
软件开发之通病解析
查看>>
python wxPython 5 (框架 wx.Frame)
查看>>
windows server backup 功能备份虚拟机
查看>>
将一个函数在主线程执行的4种方法
查看>>
windows系统自动备份ftp数据以及ftp参数解释
查看>>
js---OOP浅谈
查看>>
PHP多进程
查看>>
现代前端开发路线图:从零开始,一步步成为前端工程师
查看>>
virsh命令集
查看>>
ESXi 5.0设置时间
查看>>
PLSQ显示乱码的解决方法
查看>>
centos 释放缓存
查看>>
opengl学习笔记——纹理贴图
查看>>