zoukankan      html  css  js  c++  java
  • HDU1087

    题意

    求给定数组中最大上升子序列和

    比如样例:

    4
    5 1 2 10 -> 15
    

    思路

    模板题,dp写。

    注意

    需要注意的地方写在代码里了。

    关于写dp的题目,一定要有个全局观和注意细节,一些边界条件需要多想想多去判断一下,并且去考虑有没有条件根本就不在大部分要求中,需要我们特殊判断的。还有就是关于初始化的问题,一定要判断清楚赋值为哪个数。

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int dp[1010],a[1010];
    
    int main()
    {
        int n;
        while(~scanf("%d",&n)&&n)
        {
    
            for(int i=0; i<n; i++)
                cin>>a[i],dp[i]=a[i];
            int ans=0;
            //如果下面的ans=max(ans,dp[i])是写在最内层的
            //那么ans需要=dp[0],因为dp[0]这个数据没有进入第二层循环
            for(int i=0; i<n; i++)
            {
                for(int j=0; j<i; j++)
                {
                    if(a[j]<a[i])
                        dp[i]=max(dp[j]+a[i],dp[i]);
                }
                ans=max(ans,dp[i]);
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    Hibernate知识回顾
    Lucene搜索过程的核心类
    JSP知识回顾
    Java Swing 知识回顾
    Spring知识回顾
    javaDocking 学习
    Lucene搜索范围
    MINA 学习
    java 阿拉伯人民币转换为中文
    oracle提高查询效率方法
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14667793.html
Copyright © 2011-2022 走看看