100分 Unaccepted求助,赏关
查看原帖
100分 Unaccepted求助,赏关
910271
zhengshuyue楼主2023/9/20 11:21

第一点TLE了

#include<bits/stdc++.h>
using namespace std;
int k,a,b,ans=0x7ffffff;
int m[205];
bool n[205];
void dfs(int now,int sum)
{
    if(now==b) ans=min(ans,sum);
    if(sum>ans) return;
    n[now]=1;
    if(now+m[now]<=k&&!n[now+m[now]]) dfs(now+m[now],sum+1);
    if(now-m[now]>=1&&!n[now-m[now]]) dfs(now-m[now],sum+1);
    n[now]=0;
}
int main() 
{
    scanf("%d%d%d",&k,&a,&b);
    for(int i=1;i<=k;i++) scanf("%d",&m[i]);
    n[a]=1;
    dfs(a,0);
    if(ans!=0x7ffffff) printf("%d",ans);
    else printf("-1");
    return 0;
}
2023/9/20 11:21
加载中...