bfs,9、10过不去,求大佬帮忙看一下
查看原帖
bfs,9、10过不去,求大佬帮忙看一下
762496
linggan楼主2023/4/12 12:34

#include <iostream>
using namespace std;
int n;
int k[200];
int b[400];

void print(int d)
{
    int count = 1;
    d = b[d];
    while (d != 0)
    {
        count++;
        d = b[d];
       
    }
    cout<<count;
}

void bfs(int A,int B)
{
    int a[400] = {A};
    bool flag[400];
    int head = 0,tail = 1;
    int t[2] = {1,-1};
    do{
        for(int i=0;i<2;i++){
            if(a[head]+k[a[head]]*t[i]>0 && a[head]+k[a[head]]*t[i]<=n && !flag[a[head]]){
                flag[a[head]] = 1;
                a[tail] = a[head]+k[a[head]]*t[i];
                b[tail] = head;
                tail++;
               
                //end
                if(a[head]+k[a[head]]*t[i] == B){
                    head = tail;
                    print(tail-1);
                    return ;
                }
            }
        }
        head++;
    }while(head<tail);
    cout<<-1;
    
}


int main()
{
    int A,B;
    cin>>n>>A>>B;
    if (A == B)
    {
        cout<<0;
        return 0;
    }
    
    for(int i=1;i<=n;i++){
        cin>>k[i];
    }
    bfs(A,B);
    return 0;
}
2023/4/12 12:34
加载中...