DFS
最少次数,每次都要更新p数组,初始为正无穷
#include <iostream>
#include <cstring>
using namespace std;
const int N = 210;
int n, a, b;
int d[N];
int p[N];
int flag;
void dfs(int u, int level)
{
p[level] = u;
if (level == b)
{
flag = true;
return;
}
if (level + d[level] <= n && u + 1 < p[level + d[level]])
dfs(u + 1, level + d[level]);
if (level - d[level] >= 1 && u + 1 < p[level - d[level]])
dfs(u + 1, level - d[level]);
}
void solve()
{
memset(p, 0x3f, sizeof p);
cin >> n >> a >> b;
for (int i = 1; i <= n; i++)
cin >> d[i];
dfs(0, a);
if (flag)
cout << p[b] << endl;
else
cout << -1 << endl;
}
int main()
{
solve();
system("pause");
return 0;
}
0 回复
0 转发
0 喜欢
4 阅读



