深搜怎么过?80分
查看原帖
深搜怎么过?80分
422996
HeCao2008楼主2021/12/28 22:17
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
int ans=2147483647;
int x[201];
bool visit[201];
void dfs(int now,int cnt){
	if(now==b)ans=min(ans,cnt);
	if(cnt>ans)return;
	visit[now]=1;
	if(now+x[now]<=n&&!visit[now+x[now]])
	dfs(now+x[now],cnt+1);
	if(now-x[now]>=1&&!visit[now-x[now]])
	dfs(now-x[now],cnt+1);
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)cin>>x[i];
	visit[a]=true;
	dfs(a,0);
	if(ans!=2147483647)cout<<ans<<endl;
	else cout<<-1<<endl;
	return 0; 
} 
2021/12/28 22:17
加载中...