设为首页 加入收藏

TOP

编程算法 - 连续和最大的子数组 代码(C)
2014-11-23 19:43:12 】 浏览:338
Tags:编程 算法 连续 最大 代码

题目: 在一个数组中, 找出连续和最大的子序列.


使用两个变量, 一个变量存储当前值, 一个变量存储最大值, 并设一个临时数组, 用于更新最大和数组.


时间复杂度O(n).


代码:


/*
* main.cpp
*
* Created on: 2014.9.19
* Author: spike
*/


#include
#include
#include


using namespace std;


int FindSequence (int data[], int length, vector& vi){
if (data == NULL || length <= 0)
return INT_MIN;
int greatest = INT_MIN;
int cur = 0;
vector tmp;


for (int i=0; i if (cur <= 0) {
cur = data[i];
tmp.clear();
tmp.push_back(data[i]);
} else {
cur += data[i];
tmp.push_back(data[i]);
}


if (cur > greatest) {
vi = tmp;
greatest = cur;
}
}
return greatest;
}


int main(void)
{
int data[] = {1, -2, 3, 10, -4, 7, 2, -5};
int length = sizeof(data)/sizeof(data[0]);
vector vi;
int g = FindSequence(data, length, vi);
cout << g << ": ";
for (size_t i=0; i cout << vi[i] << " ";
}
cout << endl;


return 0;
}


输出:


18: 3 10 -4 7 2


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C# 最长公共子序列 下一篇C# 哈夫曼树

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目