深搜100分,第一点超时求助
查看原帖
深搜100分,第一点超时求助
810054
suzichen03楼主2022/12/8 20:56
#include<iostream>
#include<cmath>
using namespace std;
int n,a,b;
int minn=123456;
bool nex[201];
int k[201];
void f(int i,int sum)
{
	if(i==b)
	{
		minn=min(sum,minn);
	}
	if(sum>minn)
	{
		return ;
	}
	nex[i]=1;
	if(k[i]+i<=n&&nex[i+k[i]]!=1)
	{
		f(i+k[i],sum+1);
	}
	if(i-k[i]>=1&&nex[i-k[i]]!=1)
	{
		f(i-k[i],sum+1);
	}
	nex[i]=0;
}
int main()
{
	cin >> n >> a >> b;
	for(int i=1;i<=n;i++)
	{
		cin >> k[i]; 
	}
	nex[a]=1;
	f(a,0);
	if(minn!=123456)
	{
		cout << minn;
	}
	else
	{
		cout << -1;
	}
	return 0;
} 
2022/12/8 20:56
加载中...