dfs做法 #1#9#10求指导
查看原帖
dfs做法 #1#9#10求指导
590571
_weishiqi66_楼主2022/12/17 15:20
#include <bits/stdc++.h>
using namespace std;
int n, k[205], b;
bool pd[205];
int ans = 999;

void dfs(int a, int s) {
	if (a < 1 || a > n || s > ans )
		return;
	if (a == b) {
		ans = min(ans, s);
		return ;
	}
	if (!pd[a + k[a]]) {
		pd[a + k[a]] = 1;
		dfs(a + k[a], s + 1);
		pd[a + k[a]] = 0;
	}
	if (!pd[a - k[a]]) {
		pd[a - k[a]] = 1;
		dfs(a - k[a], s + 1);
		pd[a - k[a]] = 0;
	}
}

int main() {
	int a;
	cin >> n >> a >> b;
	if (a == b) {
		cout << 0;
		return 0;
	}
	for (int i = 1; i <= n; i++)
		cin >> k[i];
	pd[a] = 1;
	dfs(a, 0);
	if (ans == 999)
		cout << -1;
	else
		cout << ans;

	return 0;
}
2022/12/17 15:20
加载中...