位元組跳動 機械人跳躍問題

2021-09-27 02:50:44 字數 1025 閱讀 4284

機械人正在玩乙個古老的基於dos的遊戲。遊戲中有n+1座建築——從0到n編號,從左到右排列。編號為0的建築高度為0個單位,編號為i的建築的高度為h(i)個單位。

起初, 機械人在編號為0的建築處。每一步,它跳到下乙個(右邊)建築。假設機械人在第k個建築,且它現在的能量值是e, 下一步它將跳到第個k+1建築。它將會得到或者失去正比於與h(k+1)與e之差的能量。如果 h(k+1) > e 那麼機械人就失去 h(k+1) - e 的能量值,否則它將得到 e - h(k+1) 的能量值。

遊戲目標是到達第個n建築,在這個過程中,能量值不能為負數個單位。現在的問題是機械人以多少能量值開始遊戲,才可以保證成功完成遊戲?

輸入描述:

第一行輸入,表示一共有 n 組資料.

第二個是 n 個空格分隔的整數,h1, h2, h3, …, hn 代表建築物的高度

輸出描述:

輸出乙個單獨的數表示完成遊戲所需的最少單位的初始能量

輸入例子1:

53 4 3 2 4

輸出例子1:

4輸入例子2:

34 4 4

輸出例子2:

4輸入例子3:

31 6 4

輸出例子3:

3思路:假設當前位置為k,能量為e(k)。

當 h(k+1) > e(k)時,e(k+1)=e(k)-[h(k+1)-e(k)]

當 h(k+1) <= e(k)時,e(k+1)=e(k)+[e(k)-h(k+1)]

整理後兩式均為: e(k+1)=2*e(k)-h(k+1)

e(k)=(e(k+1)+h(k+1))/2。

並且考慮題目問最少是多少。那麼假設最後一步能量剛好為0,即為最優解。

**如下:

#include

using namespace std;

int h[

1000

],c[

1000];

int n;

int e=0;

intmain()

程式設計題 機械人跳躍問題 Golang 位元組跳動

機械人正在玩乙個古老的基於dos的遊戲。遊戲中有n 1座建築 從0到n編號,從左到右排列。編號為0的建築高度為0個單位,編號為i的建築的高度為h i 個單位。起初,機械人在編號為0的建築處。每一步,它跳到下乙個 右邊 建築。假設機械人在第k個建築,且它現在的能量值是e,下一步它將跳到第個k 1建築。...

機械人跳躍問題

機械人正在玩乙個古老的基於dos的遊戲。遊戲中有n 1座建築 從0到n編號,從左到右排列。保證編號為0的建築高度為0個單位。編號為i的建築 i 1,n 的高度為hi個單位。起初,機械人在編號為0的建築處。每一步,它跳到下乙個 右邊 建築。假設機械人在第k個建築,且他現在的能量值是botenergy,...

機械人跳躍問題

機械人正在玩乙個古老的基於dos的遊戲。遊戲中有n 1座建築 從0到n編號,從左到右排列。編號為0的建築高度為0個單位,編號為 i 的建築高度為h i 個單位。起初,機械人在編號為0的建築處。每一步,它跳到下乙個 右邊 建築。假設機械人在第k個建築,且它現在的能量值是e,下一步它將跳到第k 1個建築...