训练3 习题3

原创 2016年05月31日 22:28:49

题目:

Input
Input contains multiple test cases. Each test case is described in a line as follow:<br>N value_1 value_2 …value_N <br>It is guarantied that N is not more than 1000 and all value_i are in the range of 32-int.<br>A test case starting with 0 terminates the input and this test case is not to be processed.<br>
 

Output
For each case, print the maximum according to rules, and one line one case.<br>
 

Sample Input
3 1 3 2 4 1 2 3 4 4 3 3 2 1 0
 

Sample Output
4 10 3



思路:


令d[i]表示以第i个数字结尾的和最大的递增子序列  得到d[i]=max(d[i],d[j]+a[i]) (j为1到a之间的数  且a[i]>a[j])



#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1005;
int a[N], d[N];
int main()
{
    int ans,n;
    while (scanf ("%d", &n), n)
    {
        ans=0;
        for (int i = 1; i <= n; ++i)
        {
            scanf ("%d", &a[i]);
            d[i]=a[i];
            for(int j=1;j<i;++j)
                if(a[i]>a[j]) d[i]=max(d[i],d[j]+a[i]);
            ans=max(ans,d[i]);
        }
        printf("%d\n",ans);
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

训练3 习题11

思路: Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。   ...

训练3 习题6

题目:Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数...

时钟代码西工大训练3

  • 2015年03月06日 19:50
  • 786KB
  • 下载

算法导论第15章习题15.3-3最大矩阵链乘法

15.3-3思路供参考:确定一个问题是否具有最优子结构要考虑两个方面的问题:1、子问题是否是独立。2、子问题是否是重叠 先分析第一个问题:最大矩阵链乘法子问题是将矩阵链分为两部分,求前一部和后一部分...

算法导论(3版)第4章习题的部分解答

Introduction to algorithms (3rd editon) 第四章部分解答        by zevolo 4.3-1 Show that the solution of T(...
  • zevolo
  • zevolo
  • 2012年05月31日 17:17
  • 8136

Visual C++基础实践训练2(3)

  • 2009年03月11日 12:26
  • 1.9MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:训练3 习题3
举报原因:
原因补充:

(最多只允许输入30个字)