秘密行動 動態規劃

2021-10-04 07:17:29 字數 1039 閱讀 9791

問題描述

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

輸入格式

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

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

輸出格式

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

樣例輸入53

5184

樣例輸出

1分析:

構造dp二維狀態陣列,以dp[i][0] 表示第i層是消耗時間爬上來的;dp[i][1]表示第i層是跳上來的。

狀態轉移方程:

dp[i][0] 第i層是由第i-1層消耗時間爬上來的,而第i-1層可以是消耗時間爬上來的,也可以是跳上來的。

dp[i][1] 第i層是跳上來的,可以是第i-1層或者是第i-2層跳上來的。由題意可得,如果第i層是跳上去的,那麼第i-1或者i-2層必須是爬上去的。

綜合一下:

**:

#include

#include

using

namespace std;

intmain()

int dp[

105][2

];//dp[i][0]為上到i層,且最後一步為走上來的;

//dp[i][1]為上到 i層,且最後為跳上來的;

memset

(dp,0,

sizeof dp)

;//從第一層開始

dp[1]

[0]= a[1]

; dp[1]

[1]=

0;for(

int i =

2;i<=n ;i++

) cout<<

min(dp[n][0

],dp[n][1

]);return0;

}

end.

演算法提高 秘密行動

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

藍橋杯 秘密行動

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

演算法提高 秘密行動

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