题目要求:
给定一个随机数组,数组有随机的正负整数,有没有什么办法把连续的m个数的最大值求出来。
程序:
#include<iostream>
#include<vector>
using namespace std;
struct ser_num
{
int sta_pos;
int end_pos;
int val;
};
int main()
{
vector<int> num_lis;
ser_num tem;
ser_num res;
tem.sta_pos=0;
tem.end_pos=0;
tem.val=0;
res.sta_pos=0;
res.end_pos=0;
res.val=0;
int tem_num;
while(cin>>tem_num)
{
num_lis.push_back(tem_num);
}
for(int i=0;i<num_lis.size();i++)
{
tem.val+=num_lis[i];
if(num_lis[i]<0)
{
res.end_pos=i-1;
}
if(tem.val<0)
{
tem.sta_pos=i+1;
tem.val=0;
}
if(tem.val>res.val)
{
res.val=tem.val;
res.sta_pos=tem.sta_pos;
res.end_pos=tem.end_pos=i;
}
}
cout<<res.sta_pos+1<<' '<<res.end_pos+1<<' '<<res.val;
return 0;
}