首页 > 其他 > 详细

顺序表应用8:最大子段和之动态规划法

时间:2020-05-12 21:26:06      阅读:54      评论:0      收藏:0      [点我收藏+]

顺序表应用8:最大子段和之动态规划法

描述

 给定n(1 <= n <= 100000)个整数(可能为负数)组成的序列a [1],a [2],a [3],…,a [n],求该序列如a [ I] + A [1 + 1] + ... + A [j]的的子段和的最大值。所当给的整数均为负数时定义子段为状语从句:0,依此定义,所求的最优值为:Max {0,a [i] + a [i + 1] + ... + a [j]},1 <= i <= j <= n。例如,当(a [1],a [2], a [3],a [4],a [5],a [6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。

 

注意:本变量要求用动态规划法替代,只需要输出最大子段和的值。

输入项

第一行输入整数n(1 <= n <= 100000),表示整数序列中的数据元素个数;

第二行依次输入n个整数,对应顺序表中存放的每个数据元素值。

输出量

输出所求的最大子段和

 

样品

输入项 

6

-2 11 -4 13 -5 -2

输出量 

20
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <malloc.h>
 4 int main()
 5 {
 6     int n,sum,max,i,a[100009];
 7     scanf("%d",&n);
 8     sum=0;max=0;
 9     for(i=0;i<=n-1;i++)
10     {
11         scanf("%d",&a[i]);
12     }
13     for(i=0;i<=n-1;i++)
14     {
15         sum+=a[i];
16         if(sum<0)
17         {
18             sum=0;
19         }
20         if(sum>max)
21         {
22             max=sum;
23         }
24     }
25     printf("%d\n",max);
26 }

 

 

顺序表应用8:最大子段和之动态规划法

原文:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12878230.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!