国产探花免费观看_亚洲丰满少妇自慰呻吟_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}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 田林县| 姚安县| 九江市| 崇阳县| 友谊县| 盐源县| 招远市| 进贤县| 漾濞| 八宿县| 呼图壁县| 杭锦旗| 固安县| 阜阳市| 安徽省| 孝昌县| 益阳市| 合阳县| 略阳县| 嵩明县| 元谋县| 淳安县| 鞍山市| 铁岭市| 彩票| 丹阳市| 万宁市| 雷州市| 贵南县| 西华县| 扎囊县| 安陆市| 绥阳县| 桃园县| 扎鲁特旗| 阿巴嘎旗| 沙坪坝区| 福海县| 东源县| 七台河市| 黑龙江省|