救救我WA#8#9
查看原帖
救救我WA#8#9
640816
cengzh楼主2022/10/17 21:08
# include <stdio.h>
int ans = 9999999;
int target;
int num[202];
int n;

void Dfs(int floor,int step,int vis[])
{
	if (floor == target)
	{
		if (step < ans)
		{
			ans = step;	
		} 
		return ;
	}
	
	if (vis[floor] == 1)
	{
		return ;
	}
	
	vis[floor] = 1;
	
	if (floor + num[floor] <= n)
	{
		Dfs(floor+num[floor],step+1,vis);
	}
	
	if (floor - num[floor] >= 1)
	{
		Dfs(floor - num[floor],step+1,vis);
	}
	
	return ;
} 

int main (void)
{
	int start;
	scanf ("%d %d %d",&n,&start,&target);
	int vis[202];
	
	for (int i=1;i<=n;i++)
	{
		scanf ("%d",&num[i]);
		vis[i] = 0;
	}
	
	Dfs(start,0,vis);
	
	if (ans == 9999999)
	{
		printf ("-1");
		return 0;
	}
	printf("%d",ans);
	return 0;
}

难受死了

2022/10/17 21:08
加载中...