44-子串和

内存限制:64MB
时间限制:5000ms
Special Judge: No

accepted:12
submit:48

题目描述:

给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1<=x<=y<=n。

输入描述:

  1. 第一行是一个整数N(N<=10)表示测试数据的组数)
  2. 每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000)

输出描述:

  1. 对于每组测试数据输出和最大的连续子串的和。

样例输入:

复制

  1. 1
  2. 5
  3. 1 2 -1 3 -2

样例输出:

  1. 5

提示:

输入数据很多,推荐使用scanf进行输入
 
分析:
  只有对正数才进行累加,但每一步都要判断该值与原先最大值间的最大值
 
步骤:
  ①、判断第i-1个数如果大于0,就类加上第i个数(保证第i位通过前驱、或本身能够达到最大值)
  ②、判断原先my_max 与 现在第i位数字的大小,保留大的数在my_max中
 
核心代码:
  1. scanf("%d", &A[]);
  2. for(int i = ; i < n; ++ i)
  3. {
  4. if(A[i-] > ) A[i] += A[i-]; // 保证第i位的数最大
  5. my_max = max(my_max, A[i]);
  6. }

C/C++代码实现(AC):

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <cmath>
  6. #include <stack>
  7. #include <map>
  8. #include <queue>
  9.  
  10. using namespace std;
  11. const int MAXN = *;
  12. int A[MAXN];
  13.  
  14. int main()
  15. {
  16. int t;
  17. scanf("%d", &t);
  18. while(t --)
  19. {
  20. int n, my_max;
  21. scanf("%d%d", &n, &A[]);
  22. my_max = A[];
  23. for(int i = ; i < n; ++ i)
  24. {
  25. scanf("%d", &A[i]);
  26. if(A[i-] > ) // 保证第i位的数最大
  27. A[i] += A[i-];
  28. my_max = max(my_max, A[i]);
  29. }
  30. printf("%d\n", my_max);
  31. }
  32. return ;
  33. }

nyoj 44-子串和(子串和最大问题)的更多相关文章

  1. nyoj 44

    //nyoj 44 //和上面一题一样,求子串和,但是代码非常简洁..... 时间复杂度为n #include <iostream> using namespace std; int ma ...

  2. nyoj 44 子串和 简单动态规划

    子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3   描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最 ...

  3. nyoj 44 子串和

    子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3   描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最 ...

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

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=44 子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3 ...

  5. poj 3261 后缀数组 找反复出现k次的子串(子串能够重叠)

    题目:http://poj.org/problem?id=3261 仍然是后缀数组的典型应用----后缀数组+lcp+二分 做的蛮顺的,1A 可是大部分时间是在调试代码.由于模板的全局变量用混了,而自 ...

  6. KMP算法 - 求最小覆盖子串

    KMP与最小覆盖子串 最小覆盖子串:对于某个字符串s,它的最小覆盖子串指的是长度最小的子串p,p满足通过自身的多次连接得到q,最后能够使s成为q的子串. 比如: 对于s="abcab&quo ...

  7. lintcode :最长公共子串

    题目 最长公共子串 给出两个字符串,找到最长公共子串,并返回其长度. 样例 给出A=“ABCD”,B=“CBCE”,返回 2 注意 子串的字符应该连续的出现在原字符串中,这与子序列有所不同. 解题 注 ...

  8. 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列

    出处 http://segmentfault.com/blog/exploring/ 本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度:2. 与之类似但不同的 ...

  9. 华为 oj 公共子串计算

    水题,原来以为用dp数组  结果wrong了两次 我想还是自己小题大做了···呵呵·· 献给初学者作为参考 #include <stdio.h> #include <string.h ...

  10. SPOJ - DISUBSTR 多少个不同的子串

    694. Distinct Substrings Problem code: DISUBSTR   Given a string, we need to find the total number o ...

随机推荐

  1. 第六版PMBOK中工具与技术的介绍:数据收集数据分析数据表现

    数据收集技术: 1.头脑风暴:收集关于项目方法的创意和解决方案.2.焦点小组:召集预定的相关方和主题专家,了解他们对所讨论的产品服务或成果的期望和态度.主持人引导大家互动式讨论.3.访谈:通过与相关方 ...

  2. 一张图看懂Rxjava的原理

    前言 Rxjava是NetFlix出品的Java框架, 官方描述为 a library for composing asynchronous and event-based programs usin ...

  3. libevent::实现的低级 socket

    LibEvent 实现的低级 ROT13 例子 #include <cstdio> #include <netinet/in.h> #include <sys/socke ...

  4. std::lock_guard 与 std::unique_lock

    std::lock_guard 与 std::unique_lock 对 mutex 进行自动加解锁. mutex m; void fun() { unique_lock<mutex> m ...

  5. C# Halcon联合编程问题(二)

    避免重复编辑同一篇随笔,有问题就开一个新的,哪怕会很短. 还是之前那个问题,halcon中的HObject转换为Bitmap的问题,在全网找相关的办法,三通道图像的HObject转换为C#中的Bitm ...

  6. 06 Node.js学习笔记之自动路由

    在以往客户端请求的文件,我们都得判断匹配才能返回相应的数据,其实我们可以设置一个自动路由,就可以不用每次去判断用户访问的是那个文件了 //1.载入http和fs模块 var http=require( ...

  7. 元素“context:component-scan”的前缀“context”未绑定

    首先报这个错误,你得明白,是什么原因导致的? 答:未引入命名空间,和约束文件 解决方法(加上标红色标记): <?xml version="1.0" encoding=&quo ...

  8. 第二篇:版本控制git之分支

    有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量, ...

  9. python自带的IDLE编译器,听说大神都用这个(附python下载安装教程)

    python这两年这么火,学的人越来越多,小伙伴们都用什么编译器了? 今天教大家安装python并熟悉python自带的编译器IDLE. 第一步,进入python官网https://www.pytho ...

  10. MYSQL-LINUX 安装步骤

    https://www.cnblogs.com/dengshihuang/p/8029092.html   5.7版本安装步骤 1.官网下载mysql二进制文件,匹配自己的linux版本: wget ...