`
linest
  • 浏览: 155521 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

pat-1007 Maximum Subsequence Sum

    博客分类:
  • pat
 
阅读更多
1007:连续和最大子串。

O(n)时间即可完成,不需存储空间。

#include<iostream>
using namespace std;

int main()
{
	int n;
	int max;
	int sum;
	bool isfirst=true;
	int num;
	int low;
	int high;
	int tmp;

	int first;
	int last;

	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>num;

		if(isfirst)
		{
			isfirst = false;
			sum=num;
			max = num;
			low = num;
			tmp = num;
			high = num;
		}
		else
		{
			sum += num;
		}

		if(tmp==-1)
			tmp = num;

		if(sum>max)
		{
			max = sum;
			low = tmp;
			high = num;
		}

		if(sum<0)
		{
			sum=0;
			tmp = -1;
		}

		if(i==0)
			first = num;
		if(i ==n-1)
			last = num;

	}

	if(max < 0)
		cout<<0<<" "<<first<<" "<<last;
	else
		cout<<max<<" "<<low<<" "<<high;

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics