64分,DFS,错的都是TLE,请求调试!
查看原帖
64分,DFS,错的都是TLE,请求调试!
1185696
afreshmanofclanguage楼主2024/8/30 20:12
#include<bits/stdc++.h>
using namespace std;
int n,a,b,arr[205],step = 0x3f3f3f3f;
bool vis[205];
void dfs(int dep,int fl)
{
    if(dep > step || fl < 1 || fl > n || vis[fl]) return;
    if(fl == b)
    {
        step = min(dep,step);
        return ;
    }
    if(arr[fl] == 0 && fl != b) return; // 电梯已经不会动了
    vis[fl] = 1;
    dfs(dep + 1,fl + arr[fl]);
    dfs(dep + 1,fl - arr[fl]);
    vis[fl] = 0;
}
int main()
{
    cin >> n >> a >> b;
    for(int i = 1;i<=n;i++)
        cin >> arr[i];
    dfs(1,a);
    if(step == 0x3f3f3f3f) printf("-1");
    else printf("%d",step - 1);
    return 0;
}
2024/8/30 20:12
加载中...