1360:奇怪的电梯(lift) 《信息学奥赛一本通》
生活随笔
收集整理的這篇文章主要介紹了
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) 《信息学奥赛一本通》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以批量修改文件名、文件后缀的实用工具
- 下一篇: 1.8 编程基础之多维数组 22 神奇的