社区讨论
只有50分,求大佬帮助
P1135奇怪的电梯参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo89qiaz
- 此快照首次捕获于
- 2023/10/27 15:05 2 年前
- 此快照最后确认于
- 2023/10/27 15:05 2 年前
使用的bfs,队列进行维护,但不知道哪里出了问题,求各位大佬帮忙解决下,代码如下:
CPP#include<cstdio>
#include<queue>
#define maxn 210
using namespace std;
int n, a, b, ans, lift[maxn], vis[maxn];
queue <int> q;
int main()
{
scanf("%d%d%d", &n, &a, &b);
for(int i = 1; i <= n; i++)
scanf("%d", &lift[i]);
q.push(a);
if (a == b)
{
printf("0");
return 0;
}
while(!q.empty())
{
int s = q.front();
printf("%d\n", s);
q.pop();
if (s + lift[s] == b || s - lift[s] == b)
{
printf("%d", ans + 1);
return 0;
}
if (s + lift[s] <= n && vis[s + lift[s]] == 0){
vis[s + lift[s]] = 1;
q.push(s + lift[s]);
}
if (s - lift[s] >= 1 && vis[s - lift[s]] == 0){
vis[s - lift[s]] = 1;
q.push(s - lift[s]);
}
ans++;
}
printf("-1");
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...