練習賽12.2.奇怪電梯

奇怪的電梯

Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 10 Accepted Submission(s) : 5

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

大樓的每一層樓都可以停電梯,而且第i層樓(1<=i<=N)上有一個數字Ki(0<=Ki<=N)。電梯只有四個按鈕:開、關、上、下。上下的層數等於當前樓層上的那個數字。當然,如果不能滿足要求,相應的按鈕就會失靈。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,...),從一樓開始。在一樓,按“上”可以到4樓,按“下”是不起作用的,因爲沒有-2樓。那麼,從A樓到B樓至少要按幾次按鈕呢?

Input

輸入第一行爲T,表示數據組數,對於每組數據的共二行,第1行爲三個用空格隔開的正整數,表示N,A,B(1<=N<=200,1<=A,B<=N),第2行爲N個用空格隔開的正整數,表示Ki。

Output

對於每組數據輸出最少按鍵次數,若無法到達,輸出-1。

Sample Input

1
5 1 5
3 3 1 2 5

Sample Output

3
思路分析:這是廣搜的題目,主要在於它只有兩個方向的搜索要用到結構體。
代碼:#include<iostream>
#include<string.h>
#include<queue>
#include<stdio.h>
using namespace std;
int t,n,a,b,flag;
int move[300],visit[430];
struct tmp
{
    int f;//爲當前樓數
    int step;//爲步數
};
void bfs(tmp s)
{
    int i;
    queue<tmp>q;
    //q.push(s);
    tmp s1,pp;
    for(q.push(s);!q.empty();q.pop())
    {
       s1=q.front();
        //s1.step=0;
        //s1.=s1.f+move[s1.f];//即樓數爲當前樓數加上當前的要上的樓數。
        if(s1.f==b) {printf("%d\n",s1.step); flag=1;}
        else
        {
            pp.f=s1.f-move[s1.f];//從當前相下運動
            if(pp.f>=1&&pp.f<=n&&!visit[pp.f])
            {
                visit[pp.f]=1;
                pp.step=s1.step+1;
                q.push(pp);
            }
            pp.f=s1.f+move[s1.f];//從當前向上運動。
            if(pp.f>=1&&pp.f<=n&&!visit[pp.f])
            {
                visit[pp.f]=1;
                pp.step=s1.step+1;
                q.push(pp);
            }
        }


    }
}
int main()
{
    int i;
    scanf("%d",&t);
    while(t--)
    {
flag=0;
        memset(visit,0,sizeof(visit));
        scanf("%d%d%d",&n,&a,&b);
        for(i=1;i<=n;i++)
            scanf("%d",&move[i]);
            tmp pp;
            pp.step=0;
            pp.f=a;
            visit[a]=1;
            bfs(pp);
            if(!flag)
                printf("-1\n");
    }
    return 0;
}
發佈了41 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章