首页 > 编程语言 >每日OJ题_牛客_连续子数组最大和_线性dp_C++_Java

每日OJ题_牛客_连续子数组最大和_线性dp_C++_Java

时间:2024-10-17 22:46:16浏览次数:7  
标签:arr Java int C++ 牛客 数组 dp

目录

牛客_连续子数组最大和_线性dp

题目解析

C++代码

Java代码


牛客_连续子数组最大和_线性dp

连续子数组最大和_牛客题霸_牛客网 (nowcoder.com)

描述:

        给定一个长度为 n的数组,数组中的数为整数。请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,子数组最小长度为1。求这个最大值。


题目解析

  • 状态表示: dp[i] 表示:以 i 位置为结尾的所有子数组中,最大和是多少。
  • 状态转移方程: dp[i] = max(dp[i - 1] + arr[i], arr[i])

C++代码

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int n = 0;
    cin >> n;
    vector<int> a(n);
    for(int i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    vector<int> dp(n);
    int res = a[0];
    dp[0] = a[0];
    for(int i = 1; i < n; ++i)
    {
        dp[i] = max(dp[i - 1] + a[i], a[i]);
        res = max(res, dp[i]);
    }
    cout << res << endl;
    return 0;
}

Java代码

import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{
    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n + 1];
        int[] dp = new int[n + 1];
        for(int i = 1; i <= n; i++)
        {
            arr[i] = in.nextInt();
        }
        int ret = -101;
        for(int i = 1; i <= n; i++)
        {
            dp[i] = Math.max(dp[i - 1], 0) + arr[i];
            ret = Math.max(ret, dp[i]);
        }
        System.out.println(ret);
    }
}

标签:arr,Java,int,C++,牛客,数组,dp
From: https://blog.csdn.net/GRrtx/article/details/143019333

相关文章

  • java 第10天 String创建以及各类常用方法
    一.String创建的两种形式1.通过new的当时Stringstr=newString();2.不new的方式 Strings1="";二.new和不new的方式的区别是什么不new创建的字符串首先是拿着值去常量池中查找,是否有该内容,有就用常量池该字符串的地址,没有的话在常量池中创建并使用new的方式创建的字......
  • java学习10.17
    今天继续Java图形化页面的学习窗口的分别显示importjava.awt.;importjava.awt.event.;publicclass_1016{publicstaticvoidmain(String[]args){Frameframe=newFrame();frame.setBounds(500,500,300,300);frame.setAlwaysOnTop(true);//设置GridLay......
  • Chromium form表单post提交过程分析c++
    form表单get提交参考之前文章Chromium前端form表单提交过程分析c++-CSDN博客一、表单post提交测试例子:<!DOCTYPEhtml><html><head><meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><h2>表单</h2>......
  • springboot+vue基于Java的高校学生请假系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,高校教育管理方式正逐步向智能化、便捷化转变。传统的学生请假流程,往往需要学生填写纸质申请表,经过辅导员、院系多级审批,过程繁琐且效率低下。此外,纸质记录也不利于信息的长期保存与查询,易导致信息丢失或管理混......
  • C/C++语言基础--C++四大类型转换讲解
    本专栏目的更新C/C++的基础语法,包括C++的一些新特性前言通过前面几节课,我们学习了抽象、封装、继承、多态、异常等概念,这一篇我们将继续学习C++的类型转换,和C语言还有很大区别的;在本节课最后,也简要说了一下在计算机视角上看类型是什么样子的;C语言后面也会继续更新知识点,......
  • Java 一维数组作为函数参数
    //一维数组的引用#defineSIZE5voidinput(inta[],intlen);voidoutput(inta[],intlen);//函数的声明intmain(void){   inti=0;   intarr[SIZE]={86,85,85,896,45};//同理五个数据只是偶然,可能会更多   //输入   input(arr,SIZE);......
  • 详细介绍java中的锁机制
    Java中的锁机制是并发编程中用来确保多个线程在访问共享资源时不发生数据竞争的关键工具。Java提供了多种锁机制来帮助开发者管理线程同步,主要包括以下几种:1.synchronized锁synchronized是Java中最基本的锁机制,它可以用来修饰方法或者代码块,从而确保同一时间只有一个线程可以......
  • vecode写c++遇到窗口一闪而过+中文乱码咋办
    本人没使用系统cmd窗口,而是使用了vscode内置终端,目的是为了之后输出中文的时候不乱码(vscode是utf-8,cmd是gbk,干脆全部使用vscode,不使用系统cmd作为输出窗口)附上配置文件:launch.json{//使用IntelliSense了解相关属性。//悬停以查看现有属性的描述。//欲了解......
  • c++ --类和对象(篇1)
    目录1.类的概念:2.类的定义3.对象的创建:4.封装5.继承1.类的概念:                类用于指定对象的形式,是一种用户自定义的数据类型,                它是一种封装了数据和函数的组合。类中的数据称为成员变量,函数称为成员函数。 ......
  • Java常用类和基础API
    目录一、String1.1String的理解1.1.1类的声明1.1.2内部声明的属性:1.2String的实例与连接1.2.1字符串常量的存储位置1.2.2 Strinq的不可变性的理解1.2.3String的连接操作:+1.3String的构造器与常用方法1.3.1常用方法1.4String的课后练习题目1题目2题目......