DFS ,TLE
查看原帖
DFS ,TLE
1138579
Lazy_Durant楼主2023/11/9 16:53

不知道怎么优化啊,求大佬帮忙,只有三十分

#include<iostream>
using namespace std;
int st,fi,a[210],n,ans=1000;
void dfs(int s,int num){
	//达到终点,记录此时的步骤num 
	if(s==fi){
		ans=min(ans,num);
		return ;
	}
	if(num>=n) return ;
	//向上走 
	if(s+a[s]<=n) dfs(s+a[s],num+1);
	//向下走 
	if(s-a[s]>=1) dfs(s-a[s],num+1);
}
int main(){
	//st代表起点,fi代表终点 
	scanf("%d%d%d",&n,&st,&fi);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	dfs(st,0);
	if(ans!=1000) printf("%d",ans);
    else printf("-1");
	return 0;
}
2023/11/9 16:53
加载中...