文章

211

粉丝

0

获赞

1101

访问

36.9k

头像
最大子串和 题解:
P1703 厦门大学复试机试题
发布于2026年3月7日 09:03
阅读数 141

#include<bits/stdc++.h> 
using namespace std;
int main(){
	int n;
	while(cin >> n){
		vector<int> a(n);
		for(int i=0;i<n;i++)
			cin >> a[i];
		int cursum = a[0];
		int curL = 0;
		int bestsum = a[0];
		int bestL = 0,bestR = 0;
		for(int i=1;i<n;i++){
			if(cursum + a[i] > a[i])
				cursum += a[i];
			else{
				cursum = a[i];
				curL = i;
			}
			if(cursum > bestsum){
				bestsum = cursum;
				bestL = curL;
				bestR = i;
			}				
		}
		for(int i=bestL;i<bestR;i++)
			cout << a[i] << " ";
		cout << a[bestR] << endl << bestsum << endl;			 
	} 
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发