萌新求教orz为什么只有50。。。
查看原帖
萌新求教orz为什么只有50。。。
396814
LostELKv楼主2020/12/22 00:42
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,start,end,ans=0,head,tail;
bool flag=false;
int q[10010];
int a[301];
bool book[301];
int main()
{
	scanf("%d %d %d\n",&n,&start,&end);
	for(int i=1;i<=n;i++)
		scanf("%d ",&a[i]);
	head=1;tail=0;
	q[head]=start;tail=1;
	if(start==end)
	{
		printf("0");
		return 0;
	}
	while(head<=tail)
	{
		 
		if(!book[head])
		{
			book[q[head]]=true;
			int k1,k2;
			k1=q[head]-a[q[head]];k2=q[head]+a[q[head]];
			if(k1==end)
			{
				flag=true;
				ans++;
				break;
			}
			if(k2==end)
			{
				flag=true;
				ans++;
				break;
			}
			if(k1>=1&&!book[k1])
			{
				++tail;
				q[tail]=k1;
			}
			if(k2<=n&&!book[k2])
			{
				++tail;
				q[tail]=k2;
			}
			ans++;
			head++;
		}
		else
			head++;
	}
	if(flag)
		printf("%d ",ans);
	else
		printf("-1");
	return 0;
}
2020/12/22 00:42
加载中...