度度熊回家

2022-06-13 06:27:08 字數 728 閱讀 2298

輸入乙個正整數n, n <= 50。 

接下來n個整數表示座標,正數表示x軸的正方向,負數表示x軸的負方向。絕對值小於等於100

輸出描述:
輸出乙個整數表示度度熊最少需要走的距離。
輸入例子:
4

1 4 -1 3

輸出例子:
4
思路:這題的關鍵在如何找到可以去除的那一點。考察連續的三個點,若三點的值都是遞增的,如,這樣,從第一點到第三點的距離為4;當不是遞增的時候,如(2,1,5),那我們只要跳過第二點,就可以得到最短距離為3,如何得到這點了?暴力解法,列舉出缺某一點時,可以省下的距離,然後和一步步走的時候距離相減,就可以得到最短的距離。**如下:

1 #include2 #include3 #include4

5using

namespace

std;67

intmain()817

18int sum = 0, maxdiff = 0;19

for (int i = 0; i1; i++)

2023

24int diff = 0;25

for (int i = 1; i1; i++)

2631 sum -=maxdiff;

32 cout <33return0;

34 }

ref:

度度熊回家

度度熊回家 時間限制 1秒 空間限制 32768k 乙個數軸上共有 n個點,第乙個點的座標是度度熊現在位置,第 n 1個點是度度熊的家。現在他需要依次的從 0號座標走到 n 1號座標。但是除了 0號座標和 n 1號座標,他可以在其餘的 n 2個座標中選出乙個點,並直接將這個點忽略掉,問度度熊回家至少...

度度熊回家 (模擬)

思路 先計算出從第0個座標到第n 1個座標的距離,然後列舉忽略 1 n 2 的點,直接可以得到需要走的距離。複雜度o n 當然暴力列舉再重新計算也是可以ac的,複雜度o n2 ac include include using namespace std define inf 0x3f3f3f3f c...

程式設計題 度度熊回家

乙個數軸上共有n個點,第乙個點的座標是度度熊現在位置,第n 1個點是度度熊的家。現在他需要依次的從0號座標走到n 1號座標。但是除了0號座標和n 1號座標,他可以在其餘的n 2個座標中選出乙個點,並直接將這個點忽略掉,問度度熊回家至少走多少距離?輸入描述 輸入乙個正整數n,n 50。接下來n個整數表...