01-复杂度1 最大子列和问题(剑指offer和PAT)
01-复杂度1 最大子列和问题 (20分)
给定KK个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。
本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:
- 数据1:与样例等价,测试基本正确性;
 - 数据2:102个随机整数;
 - 数据3:103个随机整数;
 - 数据4:104个随机整数;
 - 数据5:105个随机整数;
 
输入格式:
输入第1行给出正整数KK (≤100000);第2行给出KK个整数,其间以空格分隔。
输出格式:
在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。
输入样例:
6
-2 11 -4 13 -5 -2
输出样例:
20
g++编译:
//01 - 复杂度1 最大子列和问题(20分)
//例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。
//
//本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:
//
//数据1:与样例等价,测试基本正确性;
//数据2:10^2个随机整数;
//数据3:10^3个随机整数;
//数据4:10^4个随机整数;
//数据5:10^5个随机整数;
//输入格式 :
//
//输入第1行给出正整数KK(\le 100000≤100000);第2行给出KK个整数,其间以空格分隔。
//
//输出格式 :
//
//在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。
//
//输入样例 :
//
//6
//- 2 11 - 4 13 - 5 - 2
//输出样例 :
//
// #include <iostream>
using namespace std;
#include <vector> #define max(a,b) (((a) > (b)) ? (a) : (b)) int GetMaxSubsum(vector<int> vec_); int main()
{
int k;
int num;
int ret = ;
vector<int> vec;
while (cin>>k)
{
for (int i = ; i < k;i++)
{
cin >> num;
vec.push_back(num);
} ret = GetMaxSubsum(vec);
cout << ret << endl;
vec.clear();
}
return ;
} int GetMaxSubsum(vector<int> vec_)
{
int tempSum = ;
int ret_sum = ;
if (vec_.size()<=)
{
return ;
}
else
{
tempSum = vec_[];
ret_sum = vec_[];
for (int i = ; i < vec_.size();i++)
{
tempSum = (tempSum < ) ? vec_[i] : (tempSum + vec_[i]);
ret_sum = max(tempSum,ret_sum);
}
return ret_sum;
}
return ret_sum;
}
本题参考了剑指offer: 连续子数组的最大和
题目描述
class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
         if(array.size()==) return ;
         int sum1 = array[];
         int temp = array[];
         for(int i=;i<array.size();i++){
             //temp为当前数组的和,当求和小于0时,重新选择求和起点
             //只要有负数,temp就会减少,此时sum1>temp;当减少为负数时,temp重新赋值;直到遇到正数时,又开始求和
              temp = (temp<?array[i]:array[i]+temp);
              sum1 = max(sum1, temp);//sum1暂时求得的和,如果后面有比sum1大的求和值,则取而代之
         }
         return sum1;
    }
};
视频中老师讲解了四种算法:暴力O(N*3),优化暴力O(N*2),分而治之O(NlogN),在线处理O(N)
这是跟着《中国大学MOOC-陈越、何钦铭-数据结构-2017春》课程学习的第一次练习,希望能够坚持者两个月;虽然还有其他的项目和研究方向和小论文的压力,不过这并不冲突;相信基础最重要的。
01-复杂度1 最大子列和问题(剑指offer和PAT)的更多相关文章
- PAT复杂度_最大子列和问题、最大子列和变种
		
01-复杂度1. 最大子列和问题 给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j ...
 - 剑指Offer - 九度1372 - 最大子向量和(连续子数组的最大和)
		
剑指Offer - 九度1372 - 最大子向量和(连续子数组的最大和)2013-11-23 16:25 题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天JOBDU测试组开完会后, ...
 - 【剑指Offer面试编程题】题目1372:最大子向量和--九度OJ
		
题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天JOBDU测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但 ...
 - 剑指Offer - 九度1524 - 复杂链表的复制
		
剑指Offer - 九度1524 - 复杂链表的复制2014-02-07 01:30 题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点 ...
 - 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先
		
剑指Offer - 九度1509 - 树中两个结点的最低公共祖先2014-02-07 01:04 题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样 ...
 - 剑指Offer - 九度1515 - 打印1到最大的N位数
		
剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...
 - 剑指Offer - 九度1391 - 顺时针打印矩阵
		
剑指Offer - 九度1391 - 顺时针打印矩阵2013-11-24 04:55 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 ...
 - 剑指Offer - 九度1386 - 旋转数组的最小数字
		
剑指Offer - 九度1386 - 旋转数组的最小数字2013-11-24 01:57 题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转 ...
 - 剑指Offer - 九度1384 - 二维数组中的查找
		
剑指Offer - 九度1384 - 二维数组中的查找2013-11-23 23:23 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...
 
随机推荐
- Java中BigDecimal类介绍及用法
			
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
 - linux 创建用户和密码
			
:useradd -m 用户名//添加用户 :passwd 用户名 //然后设置密码 :userdel -r newuser1 //删除用户 newuser1,同时删除其自家目录 samba 设置账号 ...
 - hdu3015树状数组 poj1990的离散化版本
			
都是一类题目,推导调试比较烦,想出来还是不难的 /* 给定n个点对,按一维升序排序一次,每个点的序号为Di,按二维升序排序一次,每个点的序号为Hi 求sum{w(i,j)} w(i,j)=abs(Di ...
 - python接口自动化测试二:常用操作
			
url = '接口地址' r = requests.get(url) # 发送get请求 print(r.status_code) ...
 - python 全栈开发,Day130(多玩具端的遥控功能, 简单的双向聊天,聊天记录存放数据库,消息提醒,玩具主动发起消息,玩具主动发起点播)
			
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.3.zip 注意:由于涉及到 ...
 - 基于bootstrap的基本模板
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
 - A. 【UR #16】破坏发射台
			
题解: 首先看n是偶数的 那么就是不需要满足对面这个性质的 这样就可以dp了 f[i][0/1]表示dp到第i位,当前数等于或不等于第一位的方案数 然后显然可以用矩阵优化 再考虑n为奇数 用一样的思路 ...
 - python函数式编程——匿名函数(lambda)
			
匿名函数lambda lambda x:x*x x就是参数 相当于函数 def f(x): return x*x 匿名函数可以作为函数对象赋值给变量: >>> f = lambda ...
 - django 10.5 sqlite3迁移到mysql
			
参考: http://www.voidcn.com/article/p-hesvaooz-ru.html 原文: python ./manage.py syncdb --database slave ...
 - Mysql  模糊匹配(字符串str中是否包含子字符串substr)
			
1.LIKE 通常与 % 一同使用,类似于一个元字符的搜索.若substr不在str中,则返回0. 2.INSTR(str,substr) 返回字符串 str 中子字符串的第一次出现位置.若subst ...