帮帮孩子
查看原帖
帮帮孩子
1414943
lizijian2024楼主2024/8/25 17:54

有一些点超时了,代码在这里:

#include<bits/stdc++.h>
using namespace std;
int n,a1,b,a[1145],vis[1145],ans=100000;
void e(int k,int s)
{
	if(s>=ans)return;
	if(k==b){
		ans=min(s,ans);
		return;}if(k>a[k]&&vis[k-a[k]]==0){
		vis[k-a[k]]=1;
		e(k-a[k],s+1);
		vis[k-a[k]]=0;}if(n>=k+a[k]&&vis[k+a[k]]==0){
		vis[k+a[k]]=1;
		e(k+a[k],s+1);
		vis[k+a[k]]=0;}}
int main(){
	cin>>n>>a1>>b;
	for(int i=1;i<=n;i++){
		cin>>a[i];} 
	e(a1,0); 
	if(ans==100000)
	{
		cout<<"-1";
		return 0;
	}
	cout<<ans;
	return 0;}
2024/8/25 17:54
加载中...