这题我写了一会~~ 于是我兴冲冲的提交,得了80分,其他的超时,于是我看了半天,还记算了复杂度,感觉没问题呀!可就是80分,于是我的鼠标颤颤的指向了查看题解 于是我看了别家的代码,感觉一个思路,都加了剪枝的呀!为什么 !!!??
本是同根生!!!为何你满分??
于是我把目光看向了讨论群里NB的大佬!帮帮我把!
代码:
#include<bits/stdc++.h>
using namespace std;
const int INT =1 , INF = 0, maxs=1010,MAX=0x7ffffff;
int N,A,B;
int S[maxs];
int ANS=MAX;
bool VIS[maxs];
void dfs(int X,int SUM){
if(X==B) ANS=min(ANS,SUM);
if(SUM > MAX) return;
VIS[X]=INT;
int X1=X-S[X],X2=X+S[X];
if(X1>=INT && VIS[X1]==INF) dfs(X1,SUM+1);
if(X2<=N && VIS[X2]==INF) dfs(X2,SUM+1);
VIS[X]=INF;
}int main(){
scanf("%d %d %d",&N,&A,&B);
for(int i=1;i<=N;i++) scanf("%d",&S[i]);
VIS[A]=INT;
dfs(A,INF);
if(ANS==MAX) printf("-1\n");
else printf("%d\n",ANS);
return 0;
}