zoukankan      html  css  js  c++  java
  • hdu-acm steps Max sum

    /*求最大字段和,d[i]表示已 i 结尾(字段和中包含 i )在 a[1..i] 上的最大和,d[i]=(d[i-1]+a[i]>a[i])?d[i-1]+a[i]:a[i];max = {d[i],1<=i<=n} ;至于起点和终点,要各定义一个变量去跟踪,尤其是起点*/

    #include"iostream"
    #include"stdio.h"
    #include"algorithm"
    #include"string.h"
    #include"ctype.h"
    #include"cmath"
    #define mx 100005
    #define inf -32766
    using namespace std;
    int dp[mx];
    int a[mx];
    int n;
    int main()
    {
    int t,i;
    cin>>t;
    int count1=0;
    while(t--)
    {
    count1++;
    cin>>n;
    for(i=0;i<n;i++)
    cin>>a[i];
    int cur=0,sx=0,ey=0,mxsub=dp[0]=a[0];
    for(i=1;i<n;i++)
    {
    if(dp[i-1]+a[i]>=a[i])//因为题目要求的是若有多个解,取第一个,故这里要加上等号
    {
    dp[i]=dp[i-1]+a[i];
    }
    else
    {
    dp[i]=a[i];
    cur=i;//记录起点的变化,当最大子序列的和改变时,起点有可能随着改变
    }
    if(dp[i]>mxsub)
    {
    mxsub=dp[i];
    ey=i;
    sx=cur;
    }
    }
    cout<<"Case "<<count1<<":"<<endl;
    cout<<mxsub<<' '<<sx+1<<' '<<ey+1<<endl;
    if(t) cout<<endl;//题中用的是between,所以最后一个输出后面没有空行
    }
    return 0;
    }

  • 相关阅读:
    git clone --early EOF
    weex 小结 -- <list>
    weex 小结 --官方扩展组件
    weex 小结--内建模块
    viewPager 的可滑动 Title
    viewPager + fragment
    onInterceptTouchEvent / onTouchEvent响应事件的详析
    startActivity跳转失败而且没有异常信息
    ios2048
    插入排序
  • 原文地址:https://www.cnblogs.com/acm-jing/p/4246334.html
Copyright © 2011-2022 走看看