最大连续子数组和。

来源:互联网 发布:linux怎样进入grub 编辑:程序博客网 时间:2024/05/18 17:45

问题描述:

如我们所知:每天股票的价格是波动的,作为一个投资人员,量化收益率是必要的,那么我作为一个编程人员,为投资人员解决问题是有必要的。。

解决办法:

我们把相邻日子的股票价格作差,这样在一定的时期内我们就可以得到一个数组,,那么这个问题是求数组中最大的连续子数组的和。。。

//最大连续子数组和:
#include<iostream>
using namespace std;


int maxsubarray(int *s, int n)
{
int maxsum = s[0];
int cursum = 0;
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
for (int k = i; k <= j; k++)
{
cursum += s[k];
}
if (cursum>maxsum)
{
maxsum = cursum;
}
cursum = 0;
}
}


return maxsum;
}
//测试函数:
int main()
{


int s[] = { 1, -2, 3,10, -4, 7, 2, -5 };
int num = sizeof(s) / sizeof(s[0]);
int num1;
num1=maxsubarray(s, num);
cout << num1 << endl;
return 0;
}




















0 0