華為OD機(jī)試 :找終點(diǎn)

1.題目大意

給定一個(gè)正整數(shù)數(shù)組,最大為100個(gè)成員,從第一個(gè)成員開始,走到數(shù)組最后一個(gè)成員最少的步驟數(shù)。第一步必須從第一元素開始,1<=步長<len/2, 第二步開始以所在成員的數(shù)字走相應(yīng)的步數(shù),如果目標(biāo)不可達(dá)返回-1,只輸出最少的步驟數(shù)。

2.樣例輸入

7 5 9 4 2 6 8 3 5 4 3 9

3.樣例輸出

2

4.說明

第一步:第一個(gè)可選步長選擇2,第一個(gè)成員7走第2個(gè)成員,第二步,第2個(gè)成員為9,經(jīng)過9個(gè)成員到最后

5.代碼實(shí)現(xiàn)

#include <iostream>
#include <array>

constexpr int LENGTH = 100;

int FindFinish(std::array<int, LENGTH> arr, int n)
{
    int min = 100;
    
    for (int i = 1; i < n / 2; ++i) {
        int path = 0;
        
        for (int j = i; j < n; j += arr[j]) {
            ++path;
            
            if (j == n - 1) {
                min = min < path ? min : path;
                break;
            }
        }
    }
    
    if (min == 100) {
        return -1;
    }
    
    return min;
}

int main(void)
{
    std::array<int, LENGTH> arr {};
    int index = 0;
    
    while (std::cin.peek() != '\n') {
        std::cin >> arr[index++];
    }
    
    std::cout << FindFinish(arr, index) << std::endl;
    
    return 0;
}

個(gè)人主頁:

www.codeapes.cn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容