您的位置:首页 > 编程语言 > C语言/C++

最大子数组问题-暴力求解-c++代码实现及运行实例结果

2017-12-15 14:48 609 查看
问题描述:假定你获得了投资挥发性化学公司的机会。给出一支股票17天价格表,要求求出买进卖出获得的最大化收益及买进时刻卖出时刻.......详见算法导论第三版

思路:所有连续子数组组合,然后从中选取最大的

c++代码

#include <iostream>

using namespace std;

class Array
{
private:
public:
int indexLow;
int indexHigh;
int arraySum;
};

Array maxSubArrayViolence(int array[],int len);

int main()
{
int A[]={ 2, 1,-6, 5,-9, 7, 3, 4,-5, 8, 6};
int length=sizeof(A)/sizeof(A[0]);
cout<<"输入的数组为:"<<endl;
for(int i=0;i<length;++i)
cout<<A[i]<<" ";
cout<<endl;
Array result=maxSubArrayViolence(A,length);
cout<<"最大子数组下标左值:"<<result.indexLow<<endl<<"最大子数组下标右值:"<<
result.indexHigh<<endl<<"最大子数组和:"<<result.arraySum<<endl;

return 0;
}

Array maxSubArrayViolence(int array[],int len)
{
Array maxSubArray;
for(int i=0;i<len;++i)
{
for(int j=i;j<len;++j)
{
int temp=0;//需要将上次的temp清零
for(int k=i;k<=j;++k)
temp+=array[k];
if(temp>maxSubArray.arraySum)
{
maxSubArray.arraySum=temp;//最大子数组求和
maxSubArray.indexLow=i;//最大子数组下标
maxSubArray.indexHigh=j;//最大子数组上标
}
}
}
return maxSubArray;//返回一个结构体
}


运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: