不会了
查看原帖
不会了
957610
dinghansun楼主2023/11/17 20:52

WA了第一个点

#include<bits/stdc++.h>
using namespace std;
int n,a,b,f[500],ans,minn=INT_MAX,k;
bool flag[500];
void dfs(int x)
{
	if(x==b)
	{
		if(ans<=minn) minn=ans;
		return;
	}
	if(x<1||x>n||flag[x]==1)return;
	if(ans>=minn) return;
	ans++;
	flag[x]=1;
	dfs(x-f[x]);
	flag[x]=0;
	ans--;
	ans++;
	flag[x]=1;
	dfs(x+f[x]);
	flag[x]=0;
	ans--;
	return;
}
int main()
{
	
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>f[i];
	dfs(a);
	if(minn==INT_MAX) cout<<-1;
	else cout<<minn;
	return 0;
}
2023/11/17 20:52
加载中...