HDU 1003 Max Sum

https://vjudge.net/problem/HDU-1003
刚开始接触DP算法,细节上错了好多次。整理一下
dp数组存储以a[i]为结尾的和最大的子序列的值。
如果dp[i-1]是负的则dp[i]肯定等于a[i],并更新起始位置。
最后判断一下dp[i]是不是目前最大的。

#include<iostream>
#include<cstring>
using namespace std;
int a[100005];
int dp[100005];
int main()
{
    int T;
    cin >> T;
    for(int j = 1 ; j <= T ; j++)
    {
        int N;
        cin >> N;
        int start= 1,sub = 1,ans,s = 1;
        memset(a,0,sizeof(a));
        memset(dp,0,sizeof(dp));
        for(int i = 1 ; i <= N ; i++)
        {
            cin >> a[i];
        }
        ans = a[1];
        dp[1] = a[1];
        for(int i = 2 ; i <= N ; i++)
        {
            if(dp[i-1] >= 0)
            {
                dp[i] = dp[i-1] + a[i];
            }
            else{
                dp[i] = a[i];
                s = i;
            }
            if(dp[i] > ans)
            {
                ans = dp[i];
                sub = i;
                start = s;
            }
        }
        cout << "Case "<<j<<":"<<endl;
        cout << ans <<" "<<start<<" "<<sub<<endl;
        if(j!=T){cout << endl;}
    }
    return 0;
}
全部评论

相关推荐

08-11 17:26
湘潭大学 营销
假如是小公司入门的,后续还能进大厂吗?投了大厂的简历,接了面试之后一直都没有反馈,大多数连面试的机会都没有给,我承认我破防了
WBYDCOFFIC...:大厂优势太高了,我之前在美的实习完投新的实习是一个中厂,部门的领导是从美的出来的,面试就和聊天一样,在美的的时候部门好多都是从华为出来的,一环套一环
点赞 评论 收藏
分享
点赞 评论 收藏
分享
程序员牛肉:1.大头肯定是院校问题,这个没啥说的。 2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。 3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。 但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务