80分深搜求助大佬
查看原帖
80分深搜求助大佬
813901
tuiqian666楼主2023/7/17 11:08
#include<bits/stdc++.h>
using namespace std;
int d[210],ans=201,e=0,f[210],h=0;
int n,a,b;
void dfs(int c,int answer)
{
	f[c]++;
	if(e==1)
	{
		return;
	}
	if(c == b)
	{
		h=1;
		if(ans >= answer)
		{
			ans = answer;
		}
		for(int i = 0;i < 210;i++)
			f[i] = 0;
		e=1;
		return;
	}
	if(c + d[c] <= b && f[c+d[c]] == 0)
	{
		dfs(c+d[c],answer+1);
	}
	if(c - d[c] >= 1 && f[c-d[c]] == 0)
	{
		dfs(c-d[c],answer+1);
	}
}
int main()
{
	cin >> n >> a >> b;
	for(int i = 1;i <= n;i++)
	{
		cin >> d[i];
	}
	dfs(a,0);
	if(h == 0)
	{
		cout << -1 << endl;
		return 0;
	}
	cout << ans << endl;
	return 0;
}

#9#10WA了 求大佬指点,谢谢

2023/7/17 11:08
加载中...