80分WA#8#9求助
查看原帖
80分WA#8#9求助
601355
a2233123楼主2022/10/12 17:24
#include<bits/stdc++.h>
using namespace std;
bool b[210];
int k[210];
int sum=999;
int n,A,B;
int p=0,r,s;
void dfs(int);
int main()
{
	memset(b,0,sizeof(b));
	cin>>n>>A>>B;
	for(int i=1;i<=n;i++){
		scanf("%d",&k[i]);
	}
	dfs(A);
	if(sum==999) cout<<"-1";
	else cout<<sum;
	return 0;
}
void dfs(int x){
	b[x]=1;
	if(x==B) sum=min(sum,p);
	else{
		if(x+k[x]>=1&&x+k[x]<=n&&(!b[x+k[x]])){
			++p;
			dfs(x+k[x]);
			--p;
		}
		if(x-k[x]>=1&&x-k[x]<=n&&(!b[x-k[x]])){
			++p;
			dfs(x-k[x]);
			--p;
		}
	}
}
2022/10/12 17:24
加载中...