题解 | #最大连续子序列#

最大连续子序列

https://www.nowcoder.com/practice/afe7c043f0644f60af98a0fba61af8e7

#include <bits/stdc++.h>
using namespace std;

int main(){
	int n,tmp;
	vector<int> dp,data;
	while(cin>>n){
		if(n == 0)
			break;
		for(int i = 1; i <= n; i++){
			cin>>tmp;
			dp.push_back(tmp);
			data.push_back(tmp);
		}
		int len = dp.size();
		for(int i = 1; i <= len; i++){
			if(dp[i-1] > 0)
				dp[i] += dp[i-1]; 
		}
		int end = max_element(dp.begin(),dp.end()) - dp.begin(); 
//		cout<<dp[end];
		int begin = end;
		tmp = dp[end];
		if(tmp >= 0){
			while(tmp != data[begin]){
				tmp -= data[begin];
				begin--;
			}
			cout<<dp[end]<<" "<<data[begin]<<" "<<data[end]<<endl;	
		}else{
			cout<<0<<" "<<data[0]<<" "<<data[n-1]<<endl; 
		}
		dp.clear();
		data.clear();
	}

}

全部评论

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
VirtualBool:都去逗他了?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务