跳沙坑(1)

WNJXYK在上體育課。今天體育老師不在,WNJXYK就有時間和同學們一起玩遊戲了。
突然,YouKnowWho發現,WNJXYK的面前有n個方格,每個方格上面寫了一個數字。
YouKnowWho突然想起了兒時的“跳房子”遊戲。可是作爲大學生,怎麼能玩這麼…低齡…的遊戲呢!於是決定樹立一個新的規則。

WNJXYK可以從方格外開始起跳。他每跳到一個格子上,就可以獲得格子上數字那麼多錢!但是他下一步跳到的格子上的數字必須比當前格子上的數字更大。
WNJXYK慌了,不知道他能拿到的錢是多少。聰明的你可以幫他計算一下嗎?

Input

輸入包含多組測試樣例。每一個測試樣例被如下描述:
N v1 v2 … vN
保證對於每一個測試樣例,N ≤ 1000,並且 vi在32位整數範圍內。
以0開頭的測試樣例作爲輸入終止標誌,並且這組樣例不被處理。

Output

對於每一個測試樣例,輸出根據規則他最多可以獲得的金額,每個測試樣例一行。

Sample Input

3 1 3 2
5 1 1 2 3 4
4 3 2 1 1
0

Sample Output

4
10
3

其實這一題就是最大上升子序列 要求這個上升的子序列的和是最大的

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
  int n;
  cin >> n;
  int* arr = new int[n + 1];
  int* dp = new int[n + 1];
  for (int i = 0;i < n;i++) {
   cin >> arr[i];
   dp[i] = 1;
  }
  for (int i = 1;i < n;i++) {
   for (int j = 0;j < i;j++) {
    if (arr[i] > arr[j])
     dp[i] = max(dp[i], dp[j]+1);
   }
  }
  cout << *max_element(dp, dp + n);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章