奇怪的电梯
一群大佬用广搜做,蒟蒻的我只会用深搜做......
我们只需要用深搜去找一下有没有这一层........然后就完事了,代码:
#include<iostream>
using namespace std;
int n,m,minn=2<<30-1;
int x,y,a[110000],b[110000]={0};
void zhao(int k,int sum)
{
if(sum>minn) return;//剪枝,如果当前你要找的值大于当前最小值
if(k==y)
{
minn=min(minn,sum);
return;
}
if(k+a[k]<=n&&b[k+a[k]]==0)//边界,判重
{
b[k+a[k]]=1;
zhao(k+a[k],sum+1);
b[k+a[k]]=0;
}
if(k-a[k]>=1&&b[k-a[k]]==0)
{
b[k-a[k]]=1;
zhao(k-a[k],sum+1);
b[k-a[k]]=0;
}
return ;
}
int main()
{
cin>>n>>x>>y;
for(int i=1;i<=n;i++) cin>>a[i];
zhao(x,0);
if(minn!=2<<30-1)
{
cout<<minn;
return 0;
}
cout<<"-1";
}

浙公网安备 33010602011771号