zoukankan      html  css  js  c++  java
  • 顺序表应用8:最大子段和之动态规划法

    顺序表应用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
    ",max);
    26 }
     
  • 相关阅读:
    组件之间通信(父传子)
    flex布局
    ffmpeg解析TS流(转)
    swift之?和!的含义(转)
    Swift之画圆角添加多个枚举值方法
    swift之singleton
    swift之闭包
    Swift之fallthrough
    Selector
    Settings Bundle
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12878230.html
Copyright © 2011-2022 走看看