HOJ1760 The jackpot--------最大子段和问题

来源:互联网 发布:客车订票用什么软件 编辑:程序博客网 时间:2024/05/21 06:29
题意:最大子段和思路:见博客的链接注意:犯很低级的错误,找一个数组的最大值的时候wa啦一次!#include <iostream>#include<cstring>#define MAX 10010int a[MAX],dp[MAX];using namespace std;int main(){    int n,i,m;    while(cin >> n&&n)    {        memset(dp,0,sizeof(dp));        m=0;        for(i=1; i<=n; i++)            cin >> a[i];        for(i=1; i<=n; i++)        {            dp[i+1]=a[i]+max(dp[i],0);            if(dp[i+1]>m) m=dp[i+1];        }        if(m>0) cout << "The maximum winning streak is " << m << "." << endl;        else   cout << "Losing streak." << endl;    }    return 0;}

最大字段和思路!!!


题目


#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#define ll long longll a[1000010],dp[1000010];inline ll maxs(ll a,ll b){return a>b?a:b;}using namespace std;int main(){    int  n,i;    ll m;    while(scanf("%d",&n)!=EOF)    {        for(i=1; i<=n; i++)            cin >> a[i];        m=dp[1]=a[1];        for(i=2;i<=n;i++)         {             dp[i]=maxs(a[i]+dp[i-1],a[i]);            if(dp[i]>m) m=dp[i];         }        cout << m <<  endl;    }    return 0;}


也可以用分治的思想。。。

  • 在[1, n/2]这个区域内
  • 在[n/2+1, n]这个区域内
  • 起点位于[1,n/2],终点位于[n/2+1,n]内


#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#define ll long longll a[1000010];using namespace std;ll maxsum(int l,int r){   int i,center;   ll l_sum,r_sum,sum=0,l_temp,s1,r_temp,s2;   if(l==r) sum=a[l];   else    {      center=(l+r)/2;      l_sum=maxsum(l,center);      r_sum=maxsum(center+1,r);      s1=l_temp=a[center],s2=r_temp=a[center+1];      for(i=center-1;i>=l;i--)        {           l_temp+=a[i];           if(l_temp>s1) s1=l_temp;        }      for(i=center+2;i<=r;i++)      {          r_temp+=a[i];          if(r_temp>s2) s2=r_temp;      }      sum=s1+s2;      if(l_sum>sum) sum=l_sum;      if(r_sum>sum) sum=r_sum;    }    return sum;}int main(){    int  n,i;    ll m;    while(scanf("%d",&n)!=EOF)    {        for(i=1; i<=n; i++)            cin >> a[i];        cout << maxsum(1,n) << endl;    }    return 0;}



原创粉丝点击