社区讨论

萌新求助,一个神奇的现象。

P1135奇怪的电梯参与者 5已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mi7z4z72
此快照首次捕获于
2025/11/21 05:59
4 个月前
此快照最后确认于
2025/11/21 05:59
4 个月前
查看原帖
dfs(x-q[x],sum+1);就可以ac。
但写成dfs(x-q[x],sum++);sum值一直为0。这是为什么,查错真的查了很久。
代码如下:
CPP
#include<bits/stdc++.h>
using namespace std;
int n,a,b,q[10005],ans=2147483647;
bool a1[10005];
void dfs(int x,int sum){
	if(x==b) ans=min(ans,sum);
	else if(sum<=ans){
	a1[x]=1;
	if(!a1[x-q[x]]&&x-q[x]>=1)	dfs(x-q[x],sum+1);
	if(!a1[x+q[x]]&&x+q[x]<=n)	dfs(x+q[x],sum+1);
	a1[x]=0;
	}	
}
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	cin>>q[i];
	a1[a]=1;
	dfs(a,0);
	if(ans!=2147483647) cout<<ans;
	else cout<<-1;
	return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...