[HDOJ] 1003.Max Sum

博客围绕1003.Max Sum问题,用C++求解最大子序列和。思路是设置变量max记录最大值,beg和end记录首尾元素。遍历数组累加求和,sum小于0时以当前元素重新开始,sum大于max时更新beg、end和max。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1003.Max Sum (c++)

Problem Description

Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. 
For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.

Input

The first line of the input contains an integer T(1<=T<=20) which means the number of testcases.
Then T lines follow, each line starts with a number N(1<=N<=100000), then N integers followed
(all the integers are between -1000 and 1000).

Output

For each test case, you should output two lines. The first line is "Case #:", # means the number of
the test case. The second line contains three integers, the Max Sum in the sequence, the start 
result, output the first one. Output a blank line between two cases.

Sample Input

2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5

Sample Output

Case 1:
14 1 4

Case 2:
7 1 6

题意:求最大子序列和

思路:设置变量max记录最大值,设置下标beg和end记录组成max的元素首与尾。遍历数组,累加求和sum ;如果sum<0时,以当前元素为首元素(t_beg)从新开始,否则继续累加;仅仅当sum>max时,更新beg,end,max。

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>

#define maxn 100001
using namespace std;
int a[maxn];
int main()
{
  memset(a, 0, sizeof(a));
  int T, Case = 0;
  cin >> T;

  while (T--)
  {
    int n, i;
    cin >> n;
    for (i = 0; i < n; i++)
    {
      int b;
      cin >> b;
      a[i] = b;
    }

    int max = -1001, end = 0, sum = 0, beg = 0, tbeg = 0;
    for (i = 0; i < n; i++)
    {
      sum += a[i];
      if (sum > max)
      {
        max = sum;
        end = i;
        beg = tbeg;
      }
      if (sum < 0)
      {
        sum = 0;
        tbeg = i + 1;
      }
    }
    printf("Case %d:\n", ++Case);
    printf("%d %d %d\n", max, beg + 1, end + 1);
    if (T)
    {
      printf("\n");
    }
  }
  system("pause");
}

转载于:https://www.cnblogs.com/ruoh3kou/p/9893461.html

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值