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;
    }
    
  • 相关阅读:
    http2
    JMH java基准测试
    java 线程池
    线程中断
    mybatis
    JDBC 线程安全 数据库连接池
    mysql string 列类型
    剖析nsq消息队列目录
    go微服务框架go-micro深度学习-目录
    详说tcp粘包和半包
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14667793.html
Copyright © 2011-2022 走看看