#include<bits/stdc++.h>
using namespace std;
int s[202],a,b,n,j[3]={0,1,-1},jg[3],i,jsq;
bool pt[202][3],pjg,bl[202];
void shx(int k1)
{
cout<<k1<<" ";
bl[k1]=true;
if(k1==b)
{
pjg=true;
if(jg[1]==0)
{
jg[1]=jg[2];
}
if(jg[1]>jg[2])
{
jg[1]=jg[2];
}
jg[2]=0;
return;
}
if(k1>n||k1<=0)
{
return;
}
if(pt[k1][1]==true&&bl[k1+s[k1]]==false)
{
jg[2]++;
shx(k1+s[k1]);
}
if(pt[k1][2]==true&&bl[k1-s[k1]]==false)
{
jg[2]++;
shx(k1-s[k1]);
}
bl[k1]=false;
}
int main()
{
memset(pt,true,sizeof(pt));
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
for(int i=1;i<=n;i++)
{
for(int p=1;p<=2;p++)
{
if(j[p]*s[i]+i>n||j[p]*s[i]+i<=0)
{
pt[i][p]=false;
}
if(s[i]==0)
{
pt[i][1]=false;
pt[i][2]=false;
}
}
}
shx(a);
if(pjg==false)
{
cout<<"-1";
}
else{
cout<<jg[1];
}
}
或
#include<bits/stdc++.h>
using namespace std;
int s[202],a,b,n,j[3]={0,1,-1},jg[3],i,jsq,p[202];
bool pt[202][3],pjg,bl[202][3],h[202];
void shx(int k1)
{
cout<<k1<<" ";
if(k1==b)
{
pjg=true;
if(jg[1]==0)
{
jg[1]=jg[2];
}
if(jg[1]>jg[2])
{
jg[1]=jg[2];
}
jg[2]=0;
return;
}
if(k1>n||k1<=0)
{
return;
}
if(pt[k1][1]==true)
{
jg[2]++;
bl[k1][1]=true;
p[k1]++;
if(p[k1]<=5)
{
shx(k1+s[k1]);
}
}
if(pt[k1][2]==true)
{
jg[2]++;
bl[k1][2]=true;
p[k1]++;
if(p[k1]<=5)
{
shx(k1-s[k1]);
}
}
}
int main()
{
memset(pt,true,sizeof(pt));
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
for(int i=1;i<=n;i++)
{
for(int p=1;p<=2;p++)
{
if(j[p]*s[i]+i>n||j[p]*s[i]+i<=0)
{
pt[i][p]=false;
}
if(s[i]==0)
{
pt[i][1]=false;
pt[i][2]=false;
}
}
}
shx(a);
if(pjg==false)
{
cout<<"-1";
}
else{
cout<<jg[1];
}
}