首页 > 其他分享 >数据子序列

数据子序列

时间:2024-05-25 09:28:38浏览次数:21  
标签:arr Scanner int 测试数据 序列 input 数据

Description
输入一个长度为n 的整数序列(A1,A2,……An),从中找出一段连续的长度不超过m的子序列,使得这个子序列的和最大。
Input
有多组测试数据。
对于每组测试数据的第一行,包含二个整数n和m,表示本组有n个测试数据,子序列长度为m,下一行为n个测试数据。
Output
对于每组测试数据,输出最大的子序列和,并换行。
Sample Input
3 1
1 2 3
3 2
-1000 1000 1
10 2

3 8 9 7 4 8 9 2 3 7

Sample Output
3
1001

17

import java.util.Scanner;

public class 数列 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        while (input.hasNext()) {  
            int n = input.nextInt();
            int m = input.nextInt();
            int[] arr = new int[n];

            // 读取序列中的元素
            for (int i = 0; i < n; i++) {
                arr[i] = input.nextInt();
            }

            // 计算并输出最大子序列和
            System.out.println(maxSum(n, m, arr));
        }

        input.close();
    }

    public static int maxSum(int n, int m, int[] arr) {
        int maxSum = Integer.MIN_VALUE;


        for (int length = 1; length <= m; length++) {  //截取所需子序列长度
            int currentSum = 0;


            for (int i = 0; i < length; i++) {    //子序列求和
                currentSum += arr[i];
            }
            maxSum = Math.max(maxSum, currentSum);  //每次循环,将最大值付给maxSum


            for (int i = length; i < n; i++) {  //核心方法,窗口移动法;前面已经截取了子序列的长度,既定义了窗口,现在只需要将窗口按位移动至末尾即可,移动方法是获取一个新的数,放弃旧的数
即currentSum = currentSum + arr[i];向下移动获取新的数;currentSum = currentSum - arr[i-length]放弃旧的数,实现移动
                currentSum += arr[i] - arr[i - length];
                maxSum = Math.max(maxSum, currentSum);
            }
        }

        return maxSum;
    }
}

 

标签:arr,Scanner,int,测试数据,序列,input,数据
From: https://blog.csdn.net/2301_80273979/article/details/139189231

相关文章

  • 计算机毕业设计python+spark天气预测 天气可视化 天气大数据 空气质量检测 空气质量分
    摘  要近些年大数据人工智能等技术发展迅速,我国工业正努力从“制造”迈向“智造”实现新跨越。神经网络(NeuronNetwork)是一种计算模型,通过大量数据的学习,来发现数据之间的模式和规律,模仿人脑神经元的工作方式。随着算力的提升和算法的不断成熟图像识别技术已经完全融入到生......
  • m基于GA-GRU遗传优化门控循环单元网络的电力负荷数据预测算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下: 优化前:    优化后:    对比:   2.算法涉及理论知识概要      基于遗传算法(GeneticAlgorithm,GA)优化的长门控循环单元(GatedRecurrentUnit,GRU)网络,是一种结合了进化计算与深度学习的混合预测模......
  • 【AI学习】对LLM训练中数据处理的再认识
    最近读了几篇文章,对于LLM模型中的数据处理,有了一些再认识。这几篇文章分别是《世界顶级风投a16z创始人对谈AI与创业》、《BenThompson对NatFriedman和DanielGross的采访》、《AI教父Hinton最新万字精彩访谈:直觉,AI创新的洞见和思考,未来》有一些观点:1、训练模型的数......
  • 数据库和表的基本操作
    注:以下演示均使用图形化MySQL管理软件SQLyog一、数据库的基本概念为了更加有利地管理数据,就创造了数据库,它能更有效的管理数据。例如:图书馆是保存书籍的,数据库就是保存数据的。 (1)、使用命令行窗口连接MySQL数据库登录之前,要先保证服务启动服务启动 netstartmysql......
  • 使用 Coolify 极简运维你的项目和数据库
    使用Coolify极简运维你的项目和数据库引言本文将介绍一个名为Coolify的开源软件,基于Docker提供了托管网站、数据库等服务的功能,功能丰富强大,操作简单。官方自称是Heroku/Netlify/Vercel的开源替代。我在试用了以后立即决定抛弃之前nginxproxymanager+doc......
  • 数据仓库——ETL(详细教程)
    目录建模方式ETL新建etl项目,设置项目名称位置新建数据源新建SSLS包做全量双击编辑执行SQL任务 双击编辑数据流任务编辑OLEDB源编辑数据流转换编辑OLEDB源目标右键选择执行做增量 编辑执行SQL任务编辑任务条件编辑数据流任务1编辑数据流任务2执行任务数......
  • P8765 [蓝桥杯 2021 国 AB] 翻转括号序列
    本文参考博客[蓝桥杯2021国AB]翻转括号序列(线段树上二分)一、问题简析线段树+二分初步分析令(的值为1,)的值为-1,则对于序列\(a_La_{L+1}a_{L+2}...a_R\),其为合法序列的条件为\[\begin{cases}\sum_{n=L}^R{a_n}=0\\\forall~k\in[L,R],\sum_{n=L}^k{a_n}\ge......
  • 4月手机行业线上市场销售数据分析
    政府对智能手机行业的支持政策,如5G推广,以及相关的产业政策,都在一定程度上推动了智能手机市场的发展,再加上AI应用的推广和全球科技迅猛发展,中国手机市场在2024年迎来了恢复性增长。据鲸参谋数据统计,4月线上平台(含京东天猫淘宝)智能手机品类销量约420万,环比上个月下降了20%,同比去......
  • 4月空调行业线上市场销售数据分析
    随着生活品质的提升,消费者对家用空调的诉求不仅仅满足于基本制冷制热功能,而是在环保节能、功能升维、舒适送风、智能科技、焕新设计等多维度提出需求。这种多样化的需求推动了空调产品的创新和升级,这不仅提高了空调的市场竞争力,也极大地增加了空调的销量。据鲸参谋数据统计,4月......
  • SpringMVC接收数据和响应数据
    目录SpringMVC接收数据和响应数据一、SpringMVC介绍1.概念2.核心组件和流程3.SpringMVC快速实操二、接收数据1.访问路径设置2.接收参数三、响应数据1.方法分析2.页面跳转3.返回JSON数据SpringMVC接收数据和响应数据一、SpringMVC介绍1.概念SpringW......