80 WA#8,#9求助
查看原帖
80 WA#8,#9求助
369091
Luna_Dial楼主2022/7/12 15:50
#include<bits/stdc++.h>
using namespace std;
int n,from,to;
int ans=2147483647;
int a[1009];
bool vis[1009];
void dfs(int floor,int cnt){
	if(floor==to){
		ans=min(ans,cnt);
	}
	if(cnt>ans){
		return;
	}
	vis[floor]=true;
	if(!vis[floor+a[floor]]&&floor+a[floor]<=n){
		dfs(floor+a[floor],++cnt);
	}
	if(!vis[floor-a[floor]]&&floor-a[floor]>=1){
		dfs(floor-a[floor],++cnt);
	}
	vis[floor]=false;
}
int main(){
	cin>>n>>from>>to;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	vis[from]=true;
	dfs(from,0);
	if(ans!=2147483647){
		cout<<ans;
	}
	else{
		cout<<"-1";
	}
	return 0;
}
2022/7/12 15:50
加载中...