求助!!!
查看原帖
求助!!!
1166817
Lcx_AK_IOI楼主2023/11/11 20:37

(深搜+剪枝)

1:(#1TLE)

#include<bits/stdc++.h>
using namespace std;
const int N=205;
int n,a,b,o=INT_MAX,aa[N];
bool vis[N];
void dfs(int p,int step){
	if(p==b){
		o=min(o,step);
		return;
	}
	if(step>o)return;
	if(p>n)return;
	vis[p]=1;
	if(p+aa[p]<=n&&!vis[p+aa[p]])dfs(p+aa[p],step+1);
	if(p-aa[p]>=1&&!vis[p-aa[p]])dfs(p-aa[p],step+1);
	vis[p]=0;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++){
		cin>>aa[i];
	}
	vis[a]=1;
	dfs(a,0);
	if(o!=INT_MAX)cout<<o;
	else cout<<-1;
	return 0;
}

2(#2 40%WA)

2023/11/11 20:37
加载中...