深搜,编译不过求调
查看原帖
深搜,编译不过求调
810054
suzichen03楼主2022/12/8 20:30
#include<iostream>
#include<cmath>
using namespace std;
int n,a,b;
int minn;
bool next[201];
int k[201];
void f(int i,int sum)
{
	if(i==b)
	{
		minn=min(sum,minn);
	}
	if(sum>minn)
	{
		return ;
	}
	next[i]=false;
	if(k[i]+i<=n&&next[i+k[i]]!=false)
	{
		f(i+k[i],sum+1);
	}
	if(i-k[i]>=1&&next[i-k[i]]!=false)
	{
		f(i-k[i],sum+1);
	}
	next[i]=true;
}
int main()
{
	cin >> n >> a >> b;
	for(int i=1;i<=n;i++)
	{
		cin >> k[i]; 
	}
	for(int i=0;i<=201;i++)
	{
		next[i]=false;
	}
	next[a]=true;
	f(a,0);
	if(minn>0)
	{
		cout << minn;
	}
	else
	{
		cout << -1;
	}
	return 0;
} 
2022/12/8 20:30
加载中...