递归
查看原帖
递归
398855
倾殇楼主2022/10/18 18:40
#include<bits/stdc++.h>
using namespace std;
int n,j,book[10000]={0},q,m[10000],ans=1000000;
void w(int x,int y,int z){
	if(x==y)ans=min(ans,z);
	if(m[x]!=0){
		if(x+m[x]<=n&&book[x+m[x]]!=1){
			book[x+m[x]]=1;
			w(x+m[x],y,z+1);
			book[x+m[x]]=0;
		}
		if(x-m[x]>0&&book[x-m[x]]!=1){
			book[x-m[x]]=1;
			w(x-m[x],y,z+1);
			book[x-m[x]]=0;
		}
	}
}
int main(){
	cin>>n>>j>>q;
	for(int i=1;i<=n;i++)cin>>m[i];
	if(j==q)cout<<0;
	else{
		w(j,q,0);
		if(ans==1000000){
			cout<<"-1";
		}
		else cout<<ans;	
	}
	return 0;
}

TLE 2个

2022/10/18 18:40
加载中...