求助!!!
  • 板块灌水区
  • 楼主Xushengrui
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/12/1 20:10
  • 上次更新2023/12/1 21:52:16
查看原帖
求助!!!
371197
Xushengrui楼主2023/12/1 20:10

测试五:最大连续子段之和

题目描述

输入一个正整数n(<=999),表示接下来要输入n个整数(有正有负),求出这段序列的最大连续子段和。

输入格式

第一行一个整数n。

第二行有n个数字,每个数字的值在[-10000,10000]之间。

输出格式

样例 #1

样例输入 #1

5
1  2  -5  6  8

样例输出 #1

14

提示

  • 给定一个由数字组成的序列,其中一段连续的序列称为一个子段(假设非空),子段中所有的数字和就是为子段和

例子:{1,2,3,4} 连续子段有 {1}, {1,2}, {1,2,3}, {1,2,3,4} ,{2,3}, {2,3,4}, {3,4} ,{4}。

  • Hint: 穷举:用双层循环,穷举子段的起终点,然后对当前段求和,并不断求最大值
#include<bits/stdc++.h>
using namespace std;
int m,a[10005],len=0,b[10005];
int main(){
	cin>>m;
	for(int i=1; i<=m; i++) cin>>a[i];
	for(int i=2; i<m; i++){
		len=a[i];
		for(int j=i; j<=m; j++){
			if(a[j]<=a[j+1])
				len+=a[j+1];
			else break;
		}
		b[i]=len;
		len=0;
	}
	sort(b+1,b+m+1);
	cout<<b[m]<<endl;
	return 0;
}
2023/12/1 20:10
加载中...