找出数组和最大的连续子序列
2012-06-16 14:34
274 查看
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
代码如下:
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
代码如下:
#include <iostream> using namespace std; int main() { int n, *p = NULL; cout << "Please input num:"; cin >> n; cout << "Please input digitals:"; p = new int ; for (int i = 0; i < n; ++i) { cin >> p[i]; } int sum = 0, tentative = 0; for (int i = 0; i < n; ++i) { tentative += p[i]; if (tentative <= 0) { tentative = 0; } if (sum < tentative) sum = tentative; } cout << sum << endl; delete[] p; p = NULL; return 0; }
相关文章推荐
- 找出数组连续元素相加的最大和
- 找出数组中连续的x个数,使其和最大(《编程珠玑》第八章)
- 找出给定数数组里连续的元素和的最大值
- 找出数组中的最大连续乘积子串
- 剑指offer中连续子数组的最大和+最大的子序列和的问题
- 输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,应输出0(表示无解)。1<=18,-10<=Si<=10
- 找出两个不相交连续子数组的最大和
- 【数据结构】数组中的最大连续递增子序列
- 算法题:找出一个数组中相加值最大的连续序列元素
- 数组的最大连续子序列xor
- 在一个数组中找出和最大的一个连续的子数组串
- 164. Maximum Gap *HARD* -- 无序数组找出排序后连续元素的最大间隔
- 一个int数组,求乘起来最大的连续子序列
- 找出一个乘积最大的连续子序列
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- 给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。
- 找出给定数数组里连续的元素和的最大值
- 求数组中最长的连续子序列
- hdoj 1003 连续最大子数组 分治法 & dp法
- 动态规划--求最大连续子数组的和(Python实现)&求解最大连续乘积字串(Python实现)