题目描述:
给定一个整数序列,你会求最大子串和吗?几乎所有的数据结构与算法都会描述求最大子串和的算法。今天让大家来算算最近0子串和,即整数序列中最接近0的连续子串和。例如,整数序列6, -4, 5, 6中,连续子串{-4,5}的和为1,比其他任何连续子串的和都更接近0。该整数序列的最近0子串和就是1.
输入:
每个测试文件包含多个测试案例,每个测试案例两行,第一行包括一个整数N,代表整数序列的长度,第二行是以空格隔开的N个整数,代表该整数序列。其中我们能保证1 <= N <= 105,每个整数大于等于-230且小于230.
输出:
对于每个整数序列,输出一行,包含一个整数,即最近0子串和。如果同时存在多个解(如-1, 3, 1存在-1和1两个解),则输出最大的一个(输出1)。
样例输入:
4
6 -4 5 6
2
-1 1
样例输出:
1
0

这个题一开始思考有没有O(n)的办法,结果并没有找到很好的办法于是只好按O(n2)的办法做,试着提交,居然没超时代码如下
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cmath>
 4 #include <cstring>
 5 int n;
 6 typedef long long ll;
 7 int num[100002];
 8 ll sum[100002];
 9
10 int main(int argc, char const *argv[])
11 {
12     while(scanf("%d",&n) != EOF) {
13         sum[0] = 0;
14         for(int i = 1; i <= n; i++) {
15             scanf("%d",&num[i]);
16             sum[i] = sum[i-1] + num[i];
17         }
18         int min = 999999999;
19         for(int i = n; i >= 1 && min != 0; i--) {
20             for(int j = i-1; j >= 0 && min != 0; j--) {
21                 ll tmp = sum[i] - sum[j];
22                 if(abs(tmp) < abs(min)) {
23                     min = tmp;
24                 }
25                 if(abs(tmp) == abs(min)) {
26                     if(tmp >= 0) {
27                         min = tmp;
28                     }
29                 }
30                 if(min == 0) {
31                     break;
32                 }
33             }
34         }
35         printf("%d\n",min);
36     }
37     return 0;
38 }
39
40 //6 -4 5 6
41 //6 2 7 13

转载于:https://www.cnblogs.com/jasonJie/p/5811540.html

九度oj 题目1376:最近零子序列相关推荐

  1. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  2. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  3. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

  4. 九度oj 题目1354:和为S的连续正数序列

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  5. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

  6. 九度oj题目1385:重建二叉树

    题目1385:重建二叉树 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4419 解决:1311 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和 ...

  7. 九度oj 题目1380:lucky number

    题目描述: 每个人有自己的lucky number,小A也一样.不过他的lucky number定义不一样.他认为一个序列中某些数出现的次数为n的话,都是他的lucky number.但是,现在这个序 ...

  8. 九度OJ 题目1011:最大连续子序列

    题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大 ...

  9. 九度oj 题目1411:转圈

    题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...

最新文章

  1. 关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究...
  2. 如何用度量影响敏捷环境
  3. SpringMVC 课纲
  4. 【Windows10下OpenCV 3.4.0 + Visual Studio 2015开发环境的配】
  5. 分布式、中间件、消息队列的工作模式
  6. Python函数调用(2)
  7. python正则表达式案例_Python正则表达式--实例秘籍
  8. 怀仁一中计算机等级考试网页,2021年度初中计算机等级考试理论复习题.doc
  9. css3 水纹效果(仿写阿里云)
  10. Cordova+Vue实现Android APP开发
  11. axio请求与响应拦截器
  12. 第0期-前言-学习软件测试是否需要培训
  13. 戴个美瞳却患上了角膜炎和干眼症?
  14. 纸飞机 --2013-08-08博客搬家
  15. C#中隐藏的15大功能
  16. 外设测试 - FAN 接口测试
  17. Python生成个性二维码
  18. 消除拖延的方法_拖延很烂—因此,这就是“吃青蛙”提高生产力的方法
  19. 使用python和pywin32模块实现连接打印机批量打印文件
  20. 想学python爬虫,有没有推荐的书籍?

热门文章

  1. 电脑达人教你怎么解决Win7系统盘渐渐变小的问题
  2. Linux下Nginx+PHP+MySQL配置(图)
  3. C#读写xml文件最简单方法(操作配置文件)
  4. 多VLAN环境下DHCP服务的实现
  5. JavaScript面向对象编程笔记
  6. 任意进制转换的递归实现
  7. 【正一专栏】故意豪宅纵火的保姆会判死刑吗?
  8. Java实现算法导论中快速傅里叶变换FFT递归算法
  9. Consul 服务注册与发现03—— 服务消费者
  10. Spring IOC示例代码