動態規劃法求最大子序列和

來源:互聯網
上載者:User
演算法一:直觀法,時間複雜度O(n^3)

#include<cstdio>
#include<iostream>
using namespace std;
int maxsubsequencesum(const int a[], int n)
{
    int thissum, maxsum, k;
   
    maxsum = 0;
    for(int i =0; i<n; i++)
            for(int j= i;j<n; j++)
            {
            thissum = 0;
            for(int k=i;k<=j;k++)//所有子序列和
            thissum += a[k];
           
            if(thissum > maxsum )
            maxsum = thissum;
            }
            return maxsum;
}
int main()
{
    int *p;
    int n;
   
    while(cin>>n){
        p= new int[n];
        for(int i = 0;i < n;i++)
            cin>>p[i];
        cout<< maxsubsequencesum(p,n);
    }
    delete[] p;
   
    return 0;
}

http://www.programfan.com/blog/article.asp?id=28152
動態規劃的演算法 maxSubSequenceSum3  O(n)

/*
 * 動態規劃實現,演算法複雜度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;
}

 

 記錄下標:

 

#include <stdio.h>
int  j=1,k=0;
int maxsum(int p[],int n)
{
 int i,currsum=0;
 int maxsum=p[0];
 for (i=0;i<n;i++)
 {
  currsum=currsum+p[i];
  if(currsum>maxsum) {maxsum=currsum;k=i+1;}
  if(currsum<0) {currsum=0;n=j+1;}
 
 }
 
return maxsum;

}

 

int main()
{
 int n,i;
 int a[1000];

 scanf("%d",&n);

  for(i=0;i<n;i++)
  {
  scanf("%d",&a[i]);

  }
   //maxsum=maxsum(a,n);

 printf("%d/n",maxsum(a,n));
 printf("%d,%d/n",j,k);
return 0;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.