1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; int q[210][3],head=1,tail=1; int a[210]; bool f[210]; int n,x,y,i; int main(){ cin>>n>>x>>y; for(i = 1;i <= n;i++){ cin>>a[i]; } //如果不需要移动楼层 if(x == y){ cout<<0; return 0; } q[1][1] = x; q[1][2] = 0;//次数 f[x] = true;//该层到过了 while(head <= tail){ int flag = 1; for(int i = 1;i <= 2;i++){ int to = q[head][1] + a[q[head][1]] * flag; //是正常的楼层,且没走过 if(to >= 1 && to <= n && f[to] == false){ tail++; q[tail][1] = to; q[tail][2] = q[head][2] + 1; f[to] = true; if(to == y){ cout<<q[tail][2]; return 0; } } flag = flag * -1; } head++; } cout<<-1; }
- 1
信息
- ID
- 2696
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者