42分求调
查看原帖
42分求调
1145231
emmm_what楼主2025/7/29 08:50
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[200];
int cnt=999;
bool mark[200];
void dfs(int d,int floor){
	if(floor>n||floor<1){
		return;
	}
	if(mark[floor]==1){
		return;
	}
	if(floor==b){
		if(d-1<cnt){
			cnt=d-1;
		}
		return;
	}
	mark[floor]=1;
//	for(int i=0;i<n;i++){
	dfs(d+1,floor+k[floor]);
	dfs(d+1,floor-k[floor]);
//	}
	mark[floor]=0;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		cin>>k[i];
	}
	dfs(1,a);
	if(cnt==999){
		cout<<"-1";
		return 0;
	}
	cout<<cnt;
	return 0;
}
2025/7/29 08:50
加载中...