1T求助
查看原帖
1T求助
1028442
linruizhe111楼主2023/7/14 09:43
#include <bits/stdc++.h>
#include <stdio.h>
#include <cstdio>
using namespace std;
int n,a,b,f[210],ans=1e9,vis[210];
void dfs(int now,int times)
{
	if(times>n)
	   return;
	if(now==b)
	   {
	   	   ans = min(ans,times);
	}
	else if(times<=ans)
	   {
	   	   if(now-f[now]>=1&&!vis[now-f[now]])
	   	         {
	   	         	vis[now-f[now]]=1;
	   	         	dfs(now-f[now],times+1);
	   	         	vis[now-f[now]]=0;
				   }
			if(now+f[now]<=n&&!vis[now+f[now]])
			{
				vis[now+f[now]] = 1;
				dfs(now+f[now],times+1);
				vis[now+f[now]]=0;
			}

			  }
	}
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
		cin>>f[i];
	vis[a]=1;
	dfs(a,0);
	if(ans!=1e9)
	cout<<ans;
	else
	cout<<-1;
 	return 0;//orz
}
2023/7/14 09:43
加载中...