用深搜做的"奇怪的电梯",希望大家帮忙查一下错误.
代码:
#include <bits/stdc++.h>
using namespace std;
int mapp[205],u[3],n,a,b,cnt=205;
bool book[205];
void dfs(int x,int step)
{
book[x]=1;
if(x==b)
{
cnt=min(cnt,step);
return;
}
for(int i=1;i<=2;i++)
{
u[1]=x+mapp[x];
u[2]=x-mapp[x];
if(u[i]<1||u[i]>n) continue;
if(book[u[i]]==0)
{
dfs(u[i],step+1);
u[2]=x+mapp[x];
book[u[i]]=0;
}
}
}
int main()
{
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{
cin>>mapp[i];
}
dfs(a,0);
if(cnt==205) cout<<-1;
else cout<<cnt;
return 0;
}