请“大脑”帮帮忙
查看原帖
请“大脑”帮帮忙
1287206
ylx0527楼主2024/11/23 17:40

请“大脑”帮帮看一下哪错了

#include<bits/stdc++.h>
using namespace std;
int n, a, b, cnt = -1;
int k[10000];
int flag[10000];
void dfs(int x, int f){
	flag[x] = f;
	if(x + k[x] <= n && flag[x + k[x]] > f+1) dfs(x+k[x], f+1);//上 
	if(x - k[x] >= 1 && flag[x - k[x]] > f+1) dfs(x-k[x], f+1);//下 
}
int main(){
	//freopen(".in", "r", stdin);
	//freopen(".out", "w", stdout);
	memset(flag,1e9,sizeof(flag));
	cin >> n >> a >> b;
	for(int i = 1; i <= n; i++){
		cin >> k[i];
	}
	if(a == b){
		cout << 0;
		return 0;
	}
	dfs(a, 0);
	if(a == b){
		cout << 0;
		return 0;
	}
	flag[b] == 1e9 ? cout << -1 : cout << flag[b];
	return 0;
}

2024/11/23 17:40
加载中...