不知道为啥,错的测试点全部用时超过1秒,对的测试点全部用时不到五毫秒,是不是死循环
#include<iostream>
using namespace std;
int c[201],b,min1=1000,lou[201],a,n;
void dfs(int dc,int cs){
if(b==dc){
if(cs<min1){
min1=cs;
}
return;
}
if(lou[dc]==1)
return;
if(dc-c[dc]>0){
lou[dc]=1;
dfs(dc-c[dc],cs+1);
lou[dc]=0;
}
if(dc+c[dc]<=n){
lou[dc]=1;
dfs(dc+c[dc],cs+1);
lou[dc]=0;
}
return;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++){
cin>>c[i];
}
dfs(a,0);
if(min1==1000)
cout<<-1;
else
cout<<min1;
}
证据