求助!!找问题
查看原帖
求助!!找问题
1145090
BoubbleSort___楼主2024/4/5 22:02

代码如下:

#include<iostream>
using namespace std;

const int N=210;
int n,a,b;
int arr[N];
int res=1e9;
bool flag[N];

void dfs(int x,int cnt){
    
    if(cnt>=res||x>n||x<0){
    	return ;
	}
    
    if(x==b){
        res=min(res,cnt);
        return ;
    }
    
    flag[x]=true;
    
    if(x+arr[x]<=n&&!flag[x+arr[x]]){
    	flag[x+arr[x]]==true;
    	dfs(x+arr[x],cnt+1);
    	flag[x+arr[x]]==false;
	}
    
    if(x-arr[x]>0&&!flag[x-arr[x]]){
    	flag[x-arr[x]]==true;
    	dfs(x-arr[x],cnt+1);
    	flag[x-arr[x]]==false;
	}
}

int main(){
    
    scanf("%d %d %d",&n,&a,&b);
    for(int i=1;i<=n;i++){
        scanf("%d",&arr[i]);
    }
    
    dfs(a,0);
    
    if(res==1e9){
        printf("-1\n");
    }else{
        printf("%d\n",res);
    }
    return 0;
}

实在找不到问题了

2024/4/5 22:02
加载中...