最大字串和

最大字串和:

#include <iostream>
using namespace std;

//求最大字串和:返回最大和
int maxSubSum(int a[], int len)
{
    int sum = 0;     //全局最大值
    int temp = 0;    //局部最大值
    for(int i = 0; i < len; ++i)
    {
        if(temp > 0)  //如果局部最大值大于0,则继续求和,否则以数组当前元素重新初始化
        {
            temp += a[i];
        }
        else temp = a[i];

        if(temp > sum) //如果局部最大值大于全局最大值则更新
            sum = temp;
    }
    return sum;
}

//求最大字串和:返回最大和
//           L: 最大字串的开始位置
//           R: 最大字串的结束位置
int maxSunSum(int a[], int len, int &L, int &R)
{
    int sum = 0;
    int temp = 0;
    for(int i = 0; i < len; ++i)
    {
        if(temp > 0)
        {
            temp += a[i];
        }
        else
        {
            temp = a[i];
            L = i;
        }

        if(temp > sum)
        {
            sum = temp;
            R = i;
        }
    }
    return sum;
}

int main()
{
    int a[9] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
    int L = 0, R = 0;
    int sum = maxSunSum(a, 9, L, R);
    cout << sum << " : " << endl;
    cout << L << " " << R << endl;

    //cout << maxSubSum(a, 9) << endl;
}
时间: 2024-10-07 18:27:59

最大字串和的相关文章

leetcode——Longest Substring Without Repeating Characters 求链表中无重复字符的最大字串长度(AC)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

【循环数组的最大字串和】Maximal-sum Subsequence

[循环数组的最大字串和]Maximal-sum Subsequence PROBLEM 题目描述 给一个 N×N 的矩阵 M,可以取连续的一段数(必须是横着或者竖着或者斜着,这个矩阵是循环的,具体如下).要求找到一个子序列,使得这个序列的和最大. 对于 N=8 的矩阵,如下序列都是合法的: ? M2,1,M2,2,M2,3,M2,4,M2,5,M2,6,M2,7,M2,8. ? M2,2,M2,3,M2,4. ? M2,6,M2,7,M2,8,M2,1,M2,2. ? M4,3,M5,3,M6,

spoj 7258 SUBLEX(求第k大字串

其实对sam的拓扑排序我似懂非懂但是会用一点了. /** @xigua */ #include <stdio.h> #include <cmath> #include <iostream> #include <algorithm> #include <vector> #include <stack> #include <cstring> #include <queue> #include <set>

NYOJ 44 最大字串合

子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3 描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n. 输入 第一行是一个整数N(N<=10)表示测试数据的组数) 每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素.(0<n<=1000000) 输出 对于

nyoj 104 最大和 (二维最大字串和)

描述 给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵. 例子: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其最大子矩阵为: 9 2 -4 1 -1 8 其元素总和为15. 输入 第一行输入一个整数n(0<n<=100),表示有n组测试数据: 每组测试数据: 第一行有两个的整数r,c(0<r,c<=100),r.c分别代表矩阵的行和列: 随后有r行,每行有c个整数:

求最大字串和

算法是前人的智慧,我虽不敏,请事斯诸语. #include <stdio.h> int max_adj(int a[], int len){ int sum=0, max = a[0]; int i=0; for (;i<len;i++){ sum = sum + a[i]; if (sum > max) { max=sum; } if(sum < 0){ sum=0; } } return max; } int main(){ int a[] = {1,2,3,-1,-20

poj-2479 Maximum sum 【最大字串和】

Maximum sum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34697   Accepted: 10752 Description Given a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below: Your task is to calculate d(A). Input The input consists o

取两个字符串中出现的最大字串

public class StringTest3 {public static void main(String[] args) { String str1 = "helabchaahha"; String str2 = "boodoabcdworldhhha"; String str3 = getMaxStr(str1,str2); System.out.println(str3);}public static String getMaxStr(String s1

NYOJ 44 字串和 (最大字串和 线性dp)

题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=44 子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3 描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n. 输入 第一行是一个整数N(N<=10)表示测试数据的组数) 每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个