当前位置:网站首页>1007 Maximum Subsequence Sum (25分)
1007 Maximum Subsequence Sum (25分)
2022-08-09 10:48:00 【Cutecumber】
1007 Maximum Subsequence Sum (25分)
Given a sequence of K integers { N1, N2 , …, NK}. A continuous subsequence is defined to be { Ni, Ni+1, …, Nj} where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.
Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence.
Input Specification:
Each input file contains one test case. Each case occupies two lines. The first line contains a positive integer K (≤10000). The second line contains K numbers, separated by a space.
Output Specification:
For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In case that the maximum subsequence is not unique, output the one with the smallest indices i and j (as shown by the sample case). If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.
Sample Input:
10
-10 1 2 3 4 -5 -23 3 7 -21
Sample Output:
10 1 4
一定要读题啊If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.
我用动态规划做的话会部分错误,估计是子序列的定位出了问题,我暂时还没检查出来,以后有空再改吧,现在忙着刷题。二重循环暴力搜索没问题,就是耗时有点长。
#include <iostream>
using namespace std;
void MaxSubSequence(const int A[], int N){
int ThisSum,MaxSum,i,j;
int start=0, end=0;
MaxSum = -1;
for(i=0;i<N;i++)
{
ThisSum = 0;
for(j=i;j<N;j++)
{
ThisSum += A[j];
if(ThisSum > MaxSum){
MaxSum = ThisSum;
start = i;
end = j;
}
}
}
if(MaxSum < 0){
cout << 0 <<' '<<A[0]<<' '<<A[N-1] <<endl;
}
else
cout << MaxSum<<' '<<A[start]<<' '<<A[end];
}
void dp(const int A[], int N){
int ThisSum, MaxSum=-1;
int start = 0, end=0;
int count = 0;
for(int i=0; i<N; i++){
count++;
ThisSum += A[i];
if(ThisSum > MaxSum){
MaxSum = ThisSum;
end = i;
start = i - count + 1;
}
else if(ThisSum < 0){
ThisSum = 0;
count = 0;
}
}
if(MaxSum < 0){
cout << 0 <<' '<<A[0]<<' '<<A[N-1] <<endl;
}
else
cout << MaxSum<<' '<<A[start]<<' '<<A[end] << endl;
}
int main(){
int n;
int list[10002];
cin >> n;
for(int i=0; i<n; i++){
cin >> list[i];
}
MaxSubSequence(list, n);
return 0;
}
边栏推荐
- shell脚本实战(第2版)/人民邮电出版社 脚本1 在PATH中查找程序
- arcgis制图之天地图符号样式配置
- numpy库中的函数 bincount() where() diag() all()
- activemq message persistence
- 通过Doc在MySQL数据库中建表
- 编解码(seq2seq)+注意机制(attention) 详细讲解
- ESIM(Enhanced Sequential Inference Model)- 模型详解
- Solve the ali cloud oss - the original 】 【 exe double-click response can't open, to provide a solution
- 1002 写出这个数 (20 分)
- 实测办公场景下,国产远程控制软件的表现力如何?(技术解析)
猜你喜欢
随机推荐
如何在gazebo进行 joint的转动控制
一键完成物联网产品注册,快速体验在线调试设备
人物 | 从程序员到架构师,我是如何快速成长的?
15.10 the POSIX semaphore Unix environment programming chapter 15
用Word写代码
批量转换经纬度的网页实现方法
shap库源码和代码实现
autogluon安装,使用指南,代码
Oracle数据库常用函数总结
VBA实战(11) - 工作表(Sheet) 操作汇总
绝了,这套RESTful API接口设计总结
MNIST机器学习入门
Unix Environment Programming Chapter 15 15.7 Message Queuing
强化学习 (Reinforcement Learning)
Electron application development best practices
机器学习-逻辑回归(logistics regression)
LM小型可编程控制器软件(基于CoDeSys)笔记二十六:plc的数据存储区(模拟量输入通道部分)
【 original 】 VMware Workstation implementation Openwrt soft routing, the ESXI, content is very detailed!
机器学习--线性回归(Linear Regression)
MySQL和MyEclipse的数据库连接操作