64分求调
查看原帖
64分求调
794178
2023chencheng楼主2024/10/17 23:33
#include <iostream>
#include <cstdio>
using namespace std;
int n,a,b,ar[205],Min=1e9;
bool vis[205];
void dfs(int wz,int cs){
	if(wz<=0||wz>n)return;
	if(wz==b){
		Min=min(Min,cs);
		return;
	}
	vis[wz]=1;
	if(!vis[wz+ar[wz]])dfs(wz+ar[wz],cs+1);
	if(!vis[wz-ar[wz]])dfs(wz-ar[wz],cs+1);
}
int main(){
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;i++)
		scanf("%d",ar+i);
	dfs(a,0);
	printf("%d\n",Min==1e9?-1:Min);
	return 0;
}
2024/10/17 23:33
加载中...