电梯
Problem D: 电梯
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 124 Solved: 39
[Submit][Status][Web Board]
Description
一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。
电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,
相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到
4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢?
电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,
相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到
4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢?
Input
每组数据,共有二行,第一行为三个用空格隔开的正整数,表示N,A,B(1≤N≤200, 1≤A,B≤N)
第二行为N个用空格隔开的正整数,表示Ki。
第二行为N个用空格隔开的正整数,表示Ki。
Output
每组数据,输出一行,即最少按键次数,若无法到达,则输出-1。
Sample Input
5 1 5
3 3 1 2 5
Sample Output
3
HINT
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 using namespace std; 3 int head=1,tail=1,q[200]; 4 int cg[200][200]; 5 int step[200]; 6 int book[200]; 7 int main(){ 8 int k[200]; 9 int n,a,b; 10 cin>>n>>a>>b; 11 for(int i=1;i<=n;i++) 12 { 13 cin>>k[i]; 14 } 15 for(int i=1;i<=n;i++) 16 { 17 if(i-k[i]>0) 18 { 19 cg[i][i-k[i]]=1; 20 } 21 if(i+k[i]<=n) 22 { 23 cg[i][i+k[i]]=1; 24 } 25 } 26 step[a]=0; 27 q[1]=a; 28 if(a==b) 29 { 30 cout<<0<<endl; 31 return 0; 32 } 33 do 34 { 35 for(int i=1;i<=n;i++) 36 { 37 if(cg[q[head]][i]==1) 38 { 39 if(book[i]==0) 40 { 41 book[i]=1; 42 tail++; 43 q[tail]=i; 44 step[i]=step[q[head]]+1; 45 if(q[tail]==b) 46 { 47 cout<<step[b]; 48 return 0; 49 } 50 } 51 } 52 } 53 head++; 54 }while(head<=tail); 55 cout<<-1<<endl; 56 return 0; 57 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!