zoukankan      html  css  js  c++  java
  • 求连续段最大和(dp)

    最大的和


    Time limit: 1000MS    Memory limit: 32768K
    Total Submit: 77    Accepted: 39


    Problem Description
    给出一串 a[1],a[2],a[3]......a[n], 计算出最大的字串和
    For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.

    Input
    第一行给出一个数字 T(1<=T<=20) 代表接下来的组数.
    接下来每 T 行,开始给出一个数组 N(1<=N<=100000), 接着跟着N个数字(all the integers are between -1000 and 1000).

    Output
    输出最大的字段和

    Sample Input
    2
    5 6 -1 5 4 -7
    7 0 6 -1 1 -6 7 -5

    Sample Output
    14
    7

    经典的DP:

    状态转移方程: dp[i] = max{ d[i-1] + num[i] ,  num[i] };

    代码
    #include<stdio.h>
    int main()
    {
    int n, m, i, k, max, dp[100001], num[100001];;
    while(scanf("%d", &n) != EOF)
    {
    for(i=1; i<=n; i++)
    {
    scanf(
    "%d", &m);
    for(k=0; k<m; k++)
    scanf(
    "%d", &num[k]);
    dp[
    0] = num[0];
    for(k=1; k<m; k++)
    if(dp[k-1] <= 0) /*即dp[k-1] + num[k] <= num[k]*/
    dp[k]
    = num[k];
    else
    dp[k]
    = dp[k-1] + num[k];
    max
    = dp[0];
    for(k=1; k<m; k++)
    if(max < dp[k])
    max
    = dp[k];
    printf(
    "%d\n", max);
    }
    }
    return 0;
    }
  • 相关阅读:
    可能会搞砸你的面试:你知道一个TCP连接上能发起多少个HTTP请求吗?
    iOS笔记055
    iOS笔记053- Quartz2D-练习
    iOS笔记052- Quartz2D-绘图
    IOS笔记051-手势使用
    IOS笔记050-事件处理
    IOS笔记049-UITabBarController
    IOS笔记048-数据存储
    IOS笔记047-代理传值和block传值
    IOS笔记046-UIApplication/导航控制器
  • 原文地址:https://www.cnblogs.com/submarinex/p/1941259.html
Copyright © 2011-2022 走看看