80分再求助
查看原帖
80分再求助
362468
快乐的比目鱼楼主2021/7/10 14:13
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[205],mini=1e9,sum;
bool vis[205]={false};
void dfs(int cur,int sum)
{
    if(cur==b)
    {
        mini=min(mini,sum);
        return ;
		vis[cur]=false;
    }
    if(sum>mini)
    	return ;
	vis[cur]=true;
    if(cur+k[cur]>=1&&cur+k[cur]<=n&&vis[cur+k[cur]]==false)
         dfs(cur+1*k[cur],sum+1); 
    else if(cur-k[cur]>=1&&cur-k[cur]<=n&&vis[cur-k[cur]]==false)
         dfs(cur+-k[cur],sum+1); 
    vis[cur]=false;
    return ;
}
int main(){
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
		cin>>k[i];
	dfs(a,sum);
	if(mini!=1e9)
		cout<<mini;
	else
		cout<<"-1";
	return 0;
}
思考一晚上写出来的代码变成了80分

求助!!!!

2021/7/10 14:13
加载中...