码迷,mamicode.com
首页 > 其他好文 > 详细

编程算法 - 连续和最大的子数组 代码(C)

时间:2014-09-21 14:12:30      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:mystra   编程算法   连续和最大的子数组   动态规划   代码   

连续和最大的子数组 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


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


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

时间复杂度O(n).


代码:

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

#include <iostream>
#include <vector>
#include <climits>

using namespace std;

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

	for (int i=0; i<length; ++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<int> vi;
	int g = FindSequence(data, length, vi);
	cout << g << ": ";
	for (size_t i=0; i<vi.size(); ++i) {
		cout << vi[i] << " ";
	}
	cout << endl;

    return 0;
}

输出:

18: 3 10 -4 7 2 



bubuko.com,布布扣


编程算法 - 连续和最大的子数组 代码(C)

标签:mystra   编程算法   连续和最大的子数组   动态规划   代码   

原文地址:http://blog.csdn.net/caroline_wendy/article/details/39449953

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!