欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

1360:奇怪的电梯(lift) 《信息学奥赛一本通》

发布时间:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 1360:奇怪的电梯(lift) 《信息学奥赛一本通》 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

http://ybt.ssoier.cn:8088/problem_show.php?pid=1360

/* 1360:奇怪的电梯(lift)--AC http://ybt.ssoier.cn:8088/problem_show.php?pid=1360 */ #include <bits/stdc++.h> using namespace std; int que[300][2]; int num[210]; int main( void ) {int n,a,b;cin>>n>>a>>b;int head,tail;int tempx,tempy,nx;bool flag[210];memset(flag,false,sizeof(flag));for(int i=1;i<=n;++i){//每层的数字 cin>>num[i];}//从当前层到当前层 if( a == b ) {cout<<0<<endl;return 0;}head=0;tail=1;que[tail][0]=a;que[tail][1]=0;//step//flag表示已经走过 flag[a]=true;while( head != tail){//出队 ++head;tempx=que[head][0];tempy=que[head][1];for(int i=-1;i<=1;++i){if( i != 0 ){nx=tempx+num[tempx]*i;//nx>n 上溢//nx<1 下溢//flag[nx] 表示已经走过 if( nx>n || nx<1 || flag[nx] ) continue;//break 跳出本层循环//continue:跳出本次循环if( nx == b ){cout<<tempy+1<<endl;return 0; }//入队 ++tail;que[tail][0]=nx;que[tail][1]=tempy+1;//flag[nx] 标记为已经走过flag[nx]=true; }}}cout<<-1<<endl;return 0; }

 

 

 

 

 


 

 

 

 

 

 

 

 

总结

以上是生活随笔为你收集整理的1360:奇怪的电梯(lift) 《信息学奥赛一本通》的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。