58求调!!!
查看原帖
58求调!!!
1148832
LabmemNo_012LzTopic楼主2024/7/27 12:08
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

int map[205], n, a, b, k1, k2, sl[205], xl[205], hxs[205] = { 0 }, hxx[205] = {0};

int DFS(int x)
{
	if (x == b)
	{
		return 0;
	}
	k1 = x + map[x];
	k2 = x - map[x];
	if (k1 <= n && hxs[x] == 0)
	{
		hxs[x] = 1;
		sl[x] = DFS(k1);
	}
	if (k2 >= 1 && hxx[x] == 0)
	{
		hxx[x] = 1;
		xl[x] = DFS(k2);
	}
	return min(sl[x], xl[x]) + 1;
}

int main()
{
	int ans;
	cin >> n >> a >> b;
	for (int i = 1; i <= n; i++)
	{
		cin >> map[i];
		sl[i] = 11111;
		xl[i] = 11111;
	}
	ans = DFS(a);
	if (ans >= 11111)ans = -1;
	cout << ans << endl;
	return 0;
}
2024/7/27 12:08
加载中...