藍橋杯 秘密行動

2021-10-03 07:12:59 字數 1085 閱讀 2806

問題描述

小d接到一項任務,要求他爬到一座n層大廈的頂端與神秘人物會面。這座大廈有乙個神奇的特點,每層的高度都不一樣,同時,小d也擁有一項特殊能力,可以一次向上跳躍一層或兩層,但是這項能力無法連續使用。已知向上1高度消耗的時間為1,跳躍不消耗時間。由於事態緊急,小d想知道他最少需要多少時間到達頂層。

輸入格式

第一行包含乙個整數n,代表樓的高度。

接下來n行每行乙個整數ai,代表i層的樓層高度(ai <= 100)。

輸出格式

輸出1行,包含乙個整數,表示所需的最短時間。

樣例輸入53

5184

樣例輸出

1

問題分析:

首先根據題意有兩個狀態,爬樓和跳躍,並且不能連續跳

躍,所以用兩個狀態表示跳躍(t[i])和爬樓p[i],那麼

對於跳躍狀態的路程t[i] = min(p[i - 1], p[i - 2])

(因為跳躍狀態上一步只能是爬)

對於爬樓狀態p[i] = min(t[i - 1], p[i - 1]) + a[i](

當前樓層高度)

也可以是爬樓)

最後最短的路程就是min(p[i] , t[i])

//爬樓狀態

int t[

10010];

//跳樓狀態

int main (

) p[1]

= a[1]

;for

(int i =

2; i <= n; i ++

) cout <<

min(p[n]

, t[n]);

return0;

}

藍橋杯 演算法提高 秘密行動

include include include include using namespace std const int n 10010 int n int a n int f n 2 第二維為0的話表示到達某一層是跳上來的,為1表示爬上來的。一開始做時根本沒想第二維,但是怎麼做也做不對,所以又想...

藍橋杯C 試題 演算法提高 秘密行動

小d接到一項任務,要求他爬到一座n層大廈的頂端與神秘人物會面。這座大廈有乙個神奇的特點,每層的高度都不一樣,同時,小d也擁有一項特殊能力,可以一次向上跳躍一層或兩層,但是這項能力無法連續使用。已知向上1高度消耗的時間為1,跳躍不消耗時間。由於事態緊急,小d想知道他最少需要多少時間到達頂層。第一行包含...

演算法提高 秘密行動

題目描述 小d接到一項任務,要求他爬到一座n層大廈的頂端與神秘人物會面。這座大廈有乙個神奇的特點,每層的高度都不一樣,同時,小d也擁有一項特殊能力,可以一次向上跳躍一層或兩層,但是這項能力無法連續使用。已知向上1高度消耗的時間為1,跳躍不消耗時間。由於事態緊急,小d想知道他最少需要多少時間到達頂層。...