求助,过了样例拿了58分,各位佬帮忙看看错在哪里(看过了题解但是找不出自己的错误
查看原帖
求助,过了样例拿了58分,各位佬帮忙看看错在哪里(看过了题解但是找不出自己的错误
1227031
ARTI001楼主2023/12/27 15:18
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int n,a,b;
int k[205];
int layer[205];
int count;

void dfs(int cur,int x)
{
	if(count<=n)
	{
		if(layer[cur]!=0)
		{
			return;
		}
		else layer[cur]=count;
	
		if(cur+k[cur]<=n)
		{
			count++;
			dfs(cur+k[cur],x);
			count--;
		}
		if(cur-k[cur]>=1)
		{
			count++;
			dfs(cur-k[cur],x);
			count--;
		}
		if(k[cur]==0)return;
		return;
	}
	else return;
}

int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		cin>>k[i];
	}
	dfs(a,b);
	for(int i=1;i<=n;i++)
	{
		if(layer[i]==0)
		layer[i]=-1;
	}
	cout<<layer[b];
	return 0;
}
2023/12/27 15:18
加载中...