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

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

上升子序列

2019-11-11 00:17:45
字體:
來源:轉載
供稿:網友

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}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵩明县| 平邑县| 通化县| 神池县| 冷水江市| 晋中市| 万全县| 武义县| 贵德县| 咸丰县| 乌拉特后旗| 元谋县| 乌拉特后旗| 福泉市| 北碚区| 晋州市| 和平县| 宁阳县| 石棉县| 东丰县| 增城市| 织金县| 肃南| 城市| 揭西县| 濮阳市| 万载县| 阜新| 通江县| 柏乡县| 孝感市| 本溪市| 平罗县| 阜康市| 霍州市| 淮南市| 山东| 昌都县| 封开县| 无为县| 嘉义市|