12分,其他全RE
查看原帖
12分,其他全RE
1285619
cjy2011楼主2024/4/9 22:46
#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int n,a,b,num[1000005],ans[1000005];
int f(int x,int q,int t){
	if(x==b) return q;
	ans[t]=0,ans[t+1]=0;
	
	if(x-num[x]>0){
		ans[t]=f(x-num[x],q+1,t+2);
	}
	if(x+num[x]<=n){
		ans[t+1]=f(x+num[x],q+1,t+2);
	}
	
	if(ans[t]==-1 || ans[t+1]==-1){
		return -1;
	}
	if(ans[t]==0)	{
		if(ans[t+1]==0){
			return -1;
		}
		return ans[t+1];
	}
	if(ans[t+1]==0){
		return ans[t];
	}
	return min(ans[t],ans[t+1]);
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
		cin>>num[i];
	cout<<f(a,0,1);
	return 0;
}
2024/4/9 22:46
加载中...