• 【ACM】子串和


    子串和

    时间限制: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)
    输出
    对于每组测试数据输出和最大的连续子串的和。
    样例输入
    1
    5
    1 2 -1 3 -2
    
    样例输出
    5

    思路:贪心算法

     
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <cstdio>
    
    using namespace std;
    
    
    int main(){
    
        int n;
        scanf("%d",&n);
        while (n--)
        {
            int m;
            scanf("%d",&m);
            int *a = new int [m];
            for (int i = 0 ; i < m;i++)
            {
                scanf("%d",&a[i]);
            }
    
            //解法1
            int ans = a[0];
            for (int x = 1; x < m ; x++)
            {
                a[x] = max(a[x-1]+a[x],a[x]);
                ans = max(ans,a[x]);
            }
            cout<<ans<<endl;
    
    
    
    
    
    
            //解法2
            /*int big = -100;
            int sum = 0;
            for (int k = 0 ; k < m; k++)
            {
                sum += a[k];
                if (big < sum)
                {
                    big = sum;
                }else if (sum<0)
                {
                    sum = 0;
                }
            }
            cout<<big<<endl;*/
        }
    
    
        return 0;
    }        
  • 相关阅读:
    redis同步指定key数据到其他redis中
    Golang 生成随机数
    怎么理解“平均负载”? 进行分析等
    Golang打印空心金字塔for循环实现
    python十几行代码实现三级菜单
    mysql增量恢复
    python内建函数
    python练习题总结
    迭代器和生成器
    python基础数据类型
  • 原文地址:https://www.cnblogs.com/lyc94620/p/9289300.html
Copyright © 2020-2023  润新知