62分,剩下的全部都是比正确答案少多,啥情况
查看原帖
62分,剩下的全部都是比正确答案少多,啥情况
1311505
misterLin楼主2024/3/18 18:46
#include<iostream>
#include<algorithm>
using namespace std;

const int M=205;

int N,A,B,K[M],sum=1000000;
bool gg=false,st[M];

void dfs(int X,int cnt){
	if(cnt>=sum) return;
	if(X==B&&cnt<sum){
		sum=cnt;
		gg=true;
		return;
	}
	st[X]=true;
	if(X+K[X]<=N&&!st[X+K[X]]){
		st[X+K[X]]=true;
		dfs(X+K[X],cnt+1);
	}
	if(X-K[X]>=1&&!st[X-K[X]]){
		st[X-K[X]]=true;
		dfs(X-K[X],cnt+1);
	}
}

int main(){
	cin>>N>>A>>B;
	for(int i=1;i<=N;i++){
		cin>>K[i];
	}
	dfs(A,0);
	if(gg==false){
		cout<<"-1"<<endl; 	
	} 
	else cout<<sum<<endl;
	return 0;
} 
2024/3/18 18:46
加载中...