动态规划-状态转移(O(n))

获取生成数组中的最大值

1.题目

2.思路

其实只要看透该题的本质 并不难,应用动态规划,题目就已经给出了状态方程的式子。

首先规定好maxn的大小,防止溢出。定义nums数组。定义一个函数,写入状态方程式子。最后定义一个变量与数组元素进行对比,返回变量。

3.代码

import java.util.Scanner;public class 获取生成数组中的最大值 {static int maxn=110;static int [] nums=new int[maxn];public static  int maxNums(int n) {nums[0]=0;nums[1]=1;for(int i=0;i<=n;i++) {if(2<=2*i && 2*i<=n) {   //当2<=2*i<=n时,数学形式的表达和代码表达不太一样,注意注意nums[2*i]=nums[i];}if(2<=2*i+1 &&2*i+1<=n) {nums[2*i+1]=nums[i]+nums[i+1];}}int v=0;for(int i=0;i<=n;++i) {v=Math.max(v, nums[i]);}return v;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.print("n=");int num=sc.nextInt();System.out.println(maxNums(num));}}

4.知识

1)比大小

v=Math.max(v, nums[i]);    不用导包,记住格式,Math.min();

Math.abs() 返回绝对值; Math.pow(a,b) 返回a的b次幂的值; Math.PI  表示数学常量π的值。

在Java中,Math 类提供了许多常用的数学函数和常量。与 Math.min() 类似,Math 类中还有其他一些常用的数学方法,包括:Math.max(double a, double b): 返回两个 double 值中的较大值。Math.min(int a, int b): 返回两个 int 值中的较小值。Math.abs(int a): 返回 int 值的绝对值。Math.abs(long a): 返回 long 值的绝对值。Math.abs(float a): 返回 float 值的绝对值。Math.abs(double a): 返回 double 值的绝对值。Math.sqrt(double a): 返回 double 值的正平方根。Math.pow(double a, double b): 返回 a 的 b 次幂的值。Math.exp(double a): 返回自然数 e 的 a 次幂的值。Math.log(double a): 返回 double 值的自然对数(以 e 为底)。Math.log10(double a): 返回 double 值的以 10 为底的对数。Math.sin(double a): 返回 double 值(以弧度为单位)的正弦值。Math.cos(double a): 返回 double 值(以弧度为单位)的余弦值。Math.tan(double a): 返回 double 值(以弧度为单位)的正切值。Math.asin(double a): 返回 double 值的反正弦值(以弧度为单位)。Math.acos(double a): 返回 double 值的反余弦值(以弧度为单位)。Math.atan(double a): 返回 double 值的反正切值(以弧度为单位)。Math.atan2(double y, double x): 使用两个参数 y 和 x 的商来计算反正切值(以弧度为单位)。Math.toRadians(double angdeg): 将角度转换为弧度。Math.toDegrees(double angrad): 将弧度转换为角度。Math.random(): 返回一个伪随机数,该数大于等于 0.0 且小于 1.0。Math.PI: 表示数学常量 π 的值。Math.E: 表示数学常量自然对数的底数 e 的值。这只是 Math 类中提供的一些常用方法的概览。你可以在Java的官方文档或其他相关资源中查找更多关于 Math 类的详细信息。

分隔数组以得到最大和

1.题目

2.思路

首先,我们定义一个长度为n的数组dp,其中dp[i]表示将arr数组的前i个元素分隔并变换后能够得到的元素最大和。

然后,我们从左到右遍历arr数组,对于每个位置i,我们考虑将arr[i]作为子数组的最后一个元素,并查找一个合适的分割点j(j < i),使得arr[j+1]到arr[i]这个子数组的长度不超过k,并且arr[j+1]到arr[i]中的最大值乘以子数组的长度加上dp[j]的和最大。

在遍历的过程中,我们需要维护一个变量maxVal,用来记录从当前位置向前回溯k个位置内的最大值,因为我们需要将这个最大值乘以子数组的长度。

最后,dp[n-1]就是我们需要的结果,即将整个数组分隔变换后能够得到的元素最大和。

3.代码

  
public class 分隔数组 {  static int maxn = 510;  static int[] dp = new int[maxn];  public int maxSum(int[] arr, int k) {  int n = arr.length;  for (int i = 0; i < n; i++) {  dp[i] = 0;  int maxv = arr[i]; // 当前位置的最大值  int cnt = 1; // 当前位置的子数组长度  for (int j = i - 1; j >= Math.max(0, i - k + 1); j--) {  maxv = Math.max(maxv, arr[j]); // 更新最大值  cnt++; // 增加子数组长度  dp[i] = Math.max(dp[i], dp[j] + cnt * maxv); // 更新dp[i]  }  }  return dp[n - 1];  }  public static void main(String[] args) {  分隔数组 solution = new 分隔数组();  int[] arr = {1, 15, 7, 9, 2, 5, 10};  int k = 3;  int result = solution.maxSum(arr, k);  System.out.println(result); // 输出应为84  }  
}

4.知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】数组

第一章、为什么数组的下标一般从0开始编号 提到数组&#xff0c;读者肯定不陌生&#xff0c;甚至还会很自信地说&#xff0c;数组很简单。编程语言中一般会有数组这种数据类型。不过&#xff0c;它不仅是编程语言中的一种数据类型&#xff0c;还是基础的数据结构。尽管数组看起…

Openstack云计算架构及前期服务搭建

openstack介绍 Openstack是一个开源的云计算管理平台项目&#xff0c;由几个主要的组件组合起来完成具体工作&#xff0c;支持几乎所有的云环境&#xff0c;项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台 ----百度百科 Openstack是一个云操作系统&a…

STM32开发(屏幕驱动ST7735S-SPI方式)用RT-Thread驱动测试

前言 使用ST7735S屏幕驱动&#xff0c;方便学习LVGL通过结构体的方式来管理相关函数和变量通讯协议和硬件驱动层进行解耦 驱动 配置&#xff08;用于对接硬件&#xff09; st7735s_conf.h // // Created by shchl on 2024/2/28. //#ifndef STM32F407V4T6_RTOS_ST7735S_CON…

css常用的选择器介绍

CSS&#xff08;层叠样式表&#xff09;选择器是CSS规则的一部分&#xff0c;它用于选择和定位网页上的元素&#xff0c;以便将样式应用到这些元素上。CSS选择器的种类繁多&#xff0c;每种选择器都有其特定的用途、特点和效率。在这篇文章中&#xff0c;我们将讨论一些常用的C…

Spring Boot项目如何快速从零开始打造一个属于自己的RPC框架

一、前言 在平时Spring Boot项目开发过程中,我们进行远程服务调用大都采用@RestController + @RequestMapping相关注解发布接口,使用OpenFeign组件进行微服务之间调用。这套技术架构已经足够完善了,当然没有什么问题,但是作为一个开发者,老是用一套框架天天写代码,不免有…

环境分析检测小剂量移液用耐受硝酸盐酸PFA材质吸管特氟龙移液枪枪头

PFA枪头&#xff0c;为移液枪专业定制&#xff0c;广泛用于ICP-MS、ICP-OES等痕量分析以及同位素分析等实验室。地质、电子化学品、半导体分析测试、疾控中心、制药厂、环境检测中心等一些机构少量移液用。 规格参考:0.1-0.2ml、1ml、2ml、5ml、10ml等。 目前部分规格可适配普…

什么是智能运维产品线和服务线

智能运维产品线和服务线涵盖了一系列自动化和智能化的技术和服务&#xff0c;旨在提升IT运维的效率和有效性。智能运维&#xff08;AIOps&#xff09;利用大数据、分析技术和机器学习能力来自动执行和简化运营工作流程&#xff0c;包括收集和汇总多源IT基础架构组件的数据、应用…

ARTS Week 18

Algorithm 本周的算法题为 485. 最大连续 1 的个数 给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。 示例 1&#xff1a;输入&#xff1a;nums [1,1,0,1,1,1]输出&#xff1a;3解释&#xff1a;开头的两位和最后的三位都是连续 1 &#xff0c;所以最大连续…

el-checkbox实现全选,反选,单选

<template><div class"box"><el-checkbox v-model"checkAll" :indeterminate"isIndeterminate" change"onAllSelectChange"> 全选</el-checkbox><div class"item" v-for"(item,index) in l…

R语言——条形图数据可视化的多种方式

本文章将会介绍如何使用R语言中的ggplot2包使用条形图进行数据可视化。将会使用一个“生产企业原材料的订购与运输”的订单数据&#xff0c;该数据来自2021数学建模国赛C题。 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料总体可分为 A B C 三种类…

【C++那些事儿】深入理解C++类与对象:从概念到实践(上)| 揭开this指针的神秘面纱

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C那些事儿 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 1. 面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符…

使用 Python 和CE进行游戏修改

你好。在这篇文章中,我将向您展示如何通过使用作弊引擎编辑内存来破解游戏,并且还将用 python 编写一个程序,该程序将自动编辑内存并为我们进行破解。当我学习游戏黑客时,我注意到关于使用 python 进行游戏黑客的资源很少,而关于 c++ 的资源更多。但我是 python 的忠实粉丝…

【蓝桥杯】快读|min和max值的设置|小明和完美序列|​顺子日期​|星期计算|山

目录 一、输入的三种方式 1.最常见的Scanner的输入方法 2.数据多的时候常用BufferedReader快读 3.较麻烦的StreamTokenizer快读&#xff08;用的不多&#xff09; StreamTokenizer常见错误&#xff1a; 二、min和max值的设置 三、妮妮的翻转游戏 四、小明和完美序列 五…

AI引擎助力,CamScanner智能高清滤镜开启扫描新纪元!

文章目录 ⭐ 写在前面⭐ 突破图像处理难点&#xff1a;扫描全能王的独特优势⭐ 耳听为虚&#xff0c;眼见为实⭐ 产品背后的主要核心&#xff1a;AI-Scan助力⭐ 深度学习助力智能文档处理的国际化进程⭐ 品味智能文档处理的轻松与精准 ⭐ 写在前面 在数字化快速发展的今天&…

MySQL 篇-深入了解 DML、DQL 语言(二)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 DML、DQL 语言说明 2.0 使用 DML 实现对数据管理和操作 2.1 DML - 增添数据 insert 2.2 DML - 修改数据 update 2.3 DML - 删除数据 delete 3.0 使用 DQL 实现对…

数据界的达克摩斯之剑----深入浅出带你理解网络爬虫(Forth)

目录 3.爬虫身份识别 4.用户爬虫的例子 4.1 开源爬虫 网络爬虫的组成 控制器 解析器 资源库 3.爬虫身份识别 网络爬虫通过使用http请求的用户代理&#xff08;User Agent&#xff09;字段来向网络服务器表明他们的身份。网络管理员则通过检查网络服务器的日志&#xff0…

77. 组合(力扣LeetCode)

文章目录 77. 组合题目描述回溯算法组合问题的剪枝操作 77. 组合 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [ [2,4], [3,4],…

ArcgisForJS如何将ArcGIS Server发布的点要素渲染为热力图?

文章目录 0.引言1.ArcGIS创建点要素2.ArcGIS Server发布点要素3.ArcgisForJS将ArcGIS创建的点要素渲染为热力图 0.引言 ArcGIS For JS 是一个强大的地理信息系统&#xff08;GIS&#xff09;工具&#xff0c;它允许开发者使用 JavaScript 语言来创建各种 GIS 应用。ArcGIS Ser…

DolphinScheduler——介绍及架构设计

目录 一、DolphinScheduler介绍 1.1 概述 1.2 特性 1.2.1 简单易用 1.2.2 丰富的使用场景 1.2.3 High Reliability 1.2.4 High Scalability 1.3 名词解释 1.3.1 名词解释 1.3.2 模块介绍 二、DolphinScheduler架构原理 2.1 系统架构图 2.2 架构说明 2.2.1 Maste…

音频混音算法的实现

最近项目有用到混音算法&#xff0c;这里用比较常见的一种&#xff0c;就是简单的加和之后做一下归一化。 是参考这个博主实现的&#xff1a; 音频混音的算法实现 下面直接贴代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include <math.h&…