求助 P1135
  • 板块学术版
  • 楼主Oh_JUNer
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/3/21 21:17
  • 上次更新2023/10/28 05:59:11
查看原帖
求助 P1135
666064
Oh_JUNer楼主2022/3/21 21:17

求助 P1135

因为不是很会写广搜于是我就打了深搜

但wa了2个点

思路:

能往上走就往上走,否则往下走。将每种情况都遍历一遍。如果没有输出-1。

code

#include <bits/stdc++.h>
using namespace std;
int a,b,ans=INT_MAX,n,bu,k[10005];
bool f[10005];
void dfs(int l,int cnt)
{
	if(l==b)
	{
		ans=min(cnt,ans);
		return ;
	}
	if((l+k[l])<=n&&f[l+k[l]]==0)
	{
		f[l+k[l]]=1;
		dfs(l+k[l],cnt+1);
		f[l+k[l]]=0;
	}
	if(l-k[l]>0&&f[l-k[l]]==0)
	{
		f[l-k[l]]=1;
		dfs(l-k[l],cnt+1);
		f[l+k[l]]=0;
	}
}
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
		cin>>k[i];
	dfs(a,0);
	if(ans==INT_MAX)
	{
		cout<<-1;
		return 0;
	}
	cout<<ans;
	return 0;
}

那些大佬可以帮帮本蒟蒻,谢谢!

2022/3/21 21:17
加载中...