您的位置:首页 > 产品设计 > UI/UE

pat1007Maximum Subsequence Sum (25)

2015-10-02 16:50 274 查看
题意分析:

(1)给出一组整数序列,求出这组整数序列中和最大的子序列的和,并给出子序列首位元素在原序列中的位置

(2)简单题,求最大子序列的和,采用两个指针first、last指向首元素,每次last向后移动一位,并计算从first到last之间的序列的和并更新最大和,当和小于0时,first与last重新初始化为当前last的下一个位置

可能坑点:

(1)当所有元素均为0的时候,应该是0 0 0

#include <iostream>

using namespace std;
int array[10001];
int start,final;
void getMaxSum(int array[],int num)
{
int max=0;
int sum=0;
for(int i=0,j=0;i<num&&j<num;j++)
{
sum+=array[j];
if(sum>max)
{
max=sum;
start=array[i];
final=array[j];
}
if(sum<0)
{
sum=0;
i=j+1;
}
}
cout<<max<<" "<<start<<" "<<final<<endl;
}
int main()
{
int K,i=0;
cin>>K;
int flag=1;
while(i<K)
{
cin>>array[i];
if(array[i]>=0)flag=0;
i++;
}
if(flag)
{
cout<<0<<" "<<array[0]<<" "<<array[K-1]<<endl;
return 0;
}
getMaxSum(array,K);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: