代码改变世界

hdu 1003 max sum

  youxin  阅读(208)  评论(0编辑  收藏  举报

 

复制代码
#include<stdio.h>
#define min -99999999
int sta,end;
int main()
{
    int n,i,j,t,sum,maxsum,in,b;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        sum=0;maxsum=min;sta=0;
        scanf("%d",&t);
        for(b=j=0;j<t;j++) 
        {    
            scanf("%d",&in);
            sum+=in;
            if(sum>maxsum)
            {
                maxsum=sum;
                end=j;
                sta=b;
            }
            if(sum<0)
            {
                sum=0;
                b=j+1;            
            } 
        }
        printf("Case %d:\n%d %d %d\n",i+1,maxsum,sta+1,end+1);
        if(i!=n-1) printf("\n");
    }
    return 0;
}
复制代码

上面用的是冬天用规划思想,下面的代码跟上面一样:

复制代码
/*
 * 动态规划实现,算法复杂度O(n)
 */
int maxSubSequenceSum3(int a[], int len)
{
    int i;
    int curSum; /* 当前序列和 */
    int maxSum; /* 最大序列和 */

    /* 初始化当前序列和为0 */
    curSum = 0;

    /* 初始化最大子序列和为序列第一个元素 */
    maxSum = a[0];

    /* 开始循环求子序列和 */
    for (i = 0; i < len; i++)
    {
        curSum = curSum + a[i];

        /* 与最大子序列和比较,更新最大子序列和 */
        if (curSum > maxSum)
        {
            maxSum = curSum;
        }

        /* 动态规划部分,舍弃当前和为负的子序列 */
        if (curSum < 0)
        {
            curSum = 0;
        }
    }
    return maxSum;
}
复制代码

http://blog.csdn.net/amossavez/article/details/4533325

http://blog.csdn.net/volant_hoo/article/details/2252490

 

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2011-08-17 建立WordPress博客网站——个人教程
点击右上角即可分享
微信分享提示