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

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

上升子序列

2019-11-10 22:11:46
字體:
來源:轉載
供稿:網友

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}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乃东县| 万州区| 垣曲县| 集贤县| 青川县| 金坛市| 马龙县| 鸡西市| 泽普县| 榆中县| 沁源县| 尉氏县| 巴彦淖尔市| 冷水江市| 于田县| 咸阳市| 嘉禾县| 重庆市| 崇礼县| 石门县| 张北县| 梁河县| 城步| 临清市| 罗平县| 古蔺县| 潼关县| 庆城县| 麦盖提县| 江源县| 洪泽县| 阿克陶县| 敖汉旗| 元氏县| 白水县| 修水县| 上林县| 美姑县| 西贡区| 靖边县| 美姑县|