求助第九个点TLE
查看原帖
求助第九个点TLE
563802
gl0526楼主2022/4/8 11:43
#include <bits/stdc++.h>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 210;

int n, a, b;
int k[maxn];
int vi[maxn];
ll res;

void dfs(int cur, ll co) {
  if (cur == b) {
    res = min(res, co);
    return;
  } else if (cur < 1)
    return;
  else if (vi[cur])
    return;
  else if (co >= cur)
    return;
  else if (cur > n)
    return;
  vi[cur] = 1;
  dfs(cur + k[cur], co + 1);
  dfs(cur - k[cur], co + 1);
  vi[cur] = 0;
}

int main() {
  scanf("%d%d%d", &n, &a, &b);
  for (int i = 1; i <= n; ++i) scanf("%d", k + i);
  res = INT_MAX;
  dfs(a, 0);
  printf("%lld\n", res == INT_MAX ? -1 : res);
  return 0;
}

提前判断就不会TLE,dfs之后判断就会TLE

2022/4/8 11:43
加载中...