代码求助
  • 板块学术版
  • 楼主maxxu
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/14 21:42
  • 上次更新2023/11/2 20:52:21
查看原帖
代码求助
935918
maxxu楼主2023/9/14 21:42

求助 P1135 就第一个测试点TLE了

#include<iostream>
using namespace std;
int n, a, b, k[210], ans = 200, d = 0, j[210] = {0}, bj = 0;
void dfs(int x) {
    if (d >= ans) {
        return;
    }
    if (x == b) {
        ans = d;
        bj = 1;
        return;
    }
    if (x + k[x] <= n && j[x + k[x]] == 0) {
        j[x + k[x]] = 1;
        d ++;
        dfs(x + k[x]);
        j[x + k[x]] = 0;
        d --;
    }
    if (x - k[x] > 0 && j[x - k[x]] == 0) {
        j[x - k[x]] = 1;
        d ++;
        dfs(x - k[x]);
        j[x - k[x]] = 0;
        d --;
    }
}
int main() {
    cin >> n >> a >> b;
    for (int i = 1; i <= n; i++) {
        cin >> k[i];
    }
    j[a] = 1;
    dfs(a);
    if (bj == 1) {
        cout << ans << endl;
    } else {
        cout << -1 << endl;
    }
    return 0;
}
2023/9/14 21:42
加载中...