国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

上升子序列

2019-11-10 21:57:57
字體:
來源:轉載
供稿:網友

PRoblem Description

一個只包含非負整數的序列bi,當b1 < b2 < ... < bS的時候,我們稱這個序列是上升的。對于給定的一個序列{a1, a2, ...,aN},我們可以得到一些上升的子序列{ai1, ai2, ..., aiK},這里1 ≤ i1 < i2 <...< iK ≤ N。例如:對于序列{1, 7, 3, 5, 9, 4, 8},有它的一些上升子序列,如{1, 7}, {3, 4, 8}等等。這些子序列中序列和最大的是子序列{1, 3, 5, 9},它的所有元素的和為18。對于給定的一個序列,求出它的最大的上升子序列的和。注意:最長的上升子序列的和不一定是最大的哦。

Input

輸入包含多組測試數據,對于每組測試數據:輸入數據的第一行為序列的長度 n(1 ≤ n ≤ 1000),第二行為n個非負整數 b1,b2,...,bn(0 ≤ bi ≤ 1000)。

Output

對于每組測試數據,輸出其最大上升子序列的和。

Example Input

71 7 3 5 9 4 8

Example Output

18

Hint

 

Author

01#include<stdio.h>
02int main()
03{
04    int i, n, a[1111], b[1111], j;
05    while(scanf("%d", &n) != EOF)
06    {
07        for(i = 0; i < n; i++)
08        {
09            scanf("%d", &a[i]);
10            b[i] = a[i];
11        }
12        for(i = 1; i < n; i++)
13        {
14            for(j = 0; j < i; j++)
15            {
16                if(a[j]<a[i])
17                {
18                    if(b[j]+a[i]>b[i])
19                    {
20                        b[i]=b[j]+a[i];  //得到最大的子序列
21                    }
22                }
23            }
24        }
25        int max = 0;
26        for(i = 0; i < n; i++)
27            if(b[i] > max) max = b[i];
28        printf("%d/n", max);
29    }
30    return 0;
31}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昭平县| 崇义县| 剑川县| 定结县| 霍林郭勒市| 恩平市| 汶川县| 英山县| 台州市| 中西区| 清新县| 大渡口区| 海林市| 江陵县| 九寨沟县| 麻栗坡县| 丹江口市| 眉山市| 青铜峡市| 斗六市| 连州市| 都匀市| 临邑县| 乐清市| 怀安县| 余庆县| 佳木斯市| 乳山市| 读书| 博兴县| 佛坪县| 文登市| 双桥区| 大同市| 兴仁县| 茂名市| 富裕县| 外汇| 平凉市| 尼勒克县| 揭西县|