12pts,MLE求调,必回关
查看原帖
12pts,MLE求调,必回关
942313
lhcl楼主2025/2/7 13:44

只正确2个点其它MLE 求debug

/*
    本题采用dfs
    每次dfs两种可能,上或下,并记录step
    当达到目标楼层时记ans为ans与step的最小值
    dfs参数带有当前楼层(floor),当前步数(step)
*/
#include <bits/stdc++.h>
using namespace std;
const int maxint = 2 * 1e9;
long long ans = maxint;
long long n, startfloor, finshfloor;
long long k[500];
void dfs(int floor, long long step)
{
    if (floor == finshfloor)
    {
        ans = min(ans, step);
        return;
    }
    if ((floor + k[floor]) <= n)
    {
        dfs(floor + k[floor], step + 1);
    }
    if (floor != 1 && (floor - k[floor]) > 0)
        dfs(floor - k[floor], step + 1);
    return;
}
int main()
{
    cin >> n >> startfloor >> finshfloor;
    for (int i = 1; i <= n; i++)
    {
        cin >> k[i];
    }
    dfs(startfloor, 0);
    if (ans == maxint)
        cout << -1 << endl;
    else
        cout << ans << endl;
}
2025/2/7 13:44
加载中...