为什么会超时
查看原帖
为什么会超时
1038094
qz5zchenjinpeng楼主2024/3/3 15:36
#include<bits/stdc++.h>
using namespace std;
int s,w,a[201],n,ans=0,c[3]={0,1,-1};
bool b[201],q=0;
void dfs(int ,int);
int main()
{
	cin>>n>>w>>s;
	for(int i=1;i<=n;i++)
	  cin>>a[i];
	dfs(1,w);
	if(q==0)cout<<-1;
	return 0;
}
void dfs(int k,int m)
{
	for(int i=1;i<=2;i++)
	if(1<=m+c[i]*a[m] && m+c[i]*a[m]<=n && !b[m+c[i]*a[m]])
	{
		m+=c[i]*a[m];
		b[m]=1;
		if(m==s)
		{
			
			cout<<k;
			q=1;
			return ;
		}
		else dfs(k+1,m);
		b[m]=0;
		m-=c[i]*a[m];
	}
	return;
}
2024/3/3 15:36
加载中...