社区讨论
谁能帮帮我
灌水区参与者 4已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @lo1zny0t
- 此快照首次捕获于
- 2023/10/23 05:36 2 年前
- 此快照最后确认于
- 2023/11/03 06:01 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int a,b,ans=210,k[210],n;
bool st[210],flag=0;
void dfs(int pos,int step)
{
if(flag==1)
return ;
if(pos==b)
{
ans=min(ans,step);
return ;
}
if(pos>n||pos<=0)
return ;
if(st[pos]==1&&ans==210)
{
flag=1;
cout<<-1;
return ;
}
st[pos]=1;
dfs(pos+k[pos],step+1);
st[pos]=0;
st[pos]=1;
dfs(pos-k[pos],step+1);
st[pos]=0;
}
int main()
{
cin>>n>>a>>b;
if(a==b)
{
cout<<0;
return 0;
}
for(int i=1;i<=n;i++)
cin>>k[i];
dfs(a,1);
if(ans==210)
{
cout<<-1;
return 0;
}
cout<<ans-1;
return 0;
}
回复
共 8 条回复,欢迎继续交流。
正在加载回复...