给定数组,求最大的非邻接子数组之和

C++解OJ题--最大子数组和(第一次尝试动态规划,很烧脑) 烧脑的一天 阅读详情

 给定数组,求最大的非邻接子数组之和,复杂度o(n)

例如:
i) 3 2 7 10 结果是 13 ( 3 and 10)
ii) 3 2 5 10 7 结果是 15 (sum of 3, 5 and 7)

 

  1. 对数组 a[i], i = 1, 2, 3, ..., N , 结果是 f[N] 
  2. f[1] = a[1] 
  3. f[2] = max (a[1], a[2]) 
  4. f[n + 2] = max(f[n + 1], f[n] + a[n + 2])

代码:

  1. #include <stdio.h> 
  2. int max(int a, int b) 
  3. { 
  4. return a > b ? a : b; 
  5. } 
  6. void main() 
  7. { 
  8. int a[] = {3, 2, 7, 10}; 
  9. int f1 = a[0]; 
  10. int f2 = max(a[0], a[1]); 
  11. for (int i = 2; i < sizeof(a) / sizeof(a[0]); i++) { 
  12. int f3 = max(f2, f1 + a[i]); 
  13. f1 = f2; 
  14. f2 = f3; 
  15. } 
  16. printf("%d", f2); 
  17. } 

 

手把手教你学Simulink--基于飞轮储能系统的场景实例:飞轮储能与锂电池混合储能系统的协同控制 本文详细介绍了基于Simulink的飞轮储能与锂电池混合储能系统协同控制建模方法。通过高通/低通滤波器实现功率分配,使飞轮处理高频波动(±100kW),锂电池承担削峰填谷(50kW)。仿真结果表明,该系统效率达88%,锂电池循环次数减少90%,投资成本比纯电池方案节省200万美元。文章包含完整的建模步骤、控制策略设计和多场景仿真分析,为构建高效、长寿、经济的智能储能系统提供了实用解决方案。 阅读详情

相关推荐

PDF批量加水印 与 去除水印实践

我们可以给PDF加图片水印或文字水印,要去除图片水印,一般只需要删除最后一个图片对象即可。要去除文字水印,需要保证主体内容和文字水印在/Contents中位于不同的对象内,这样我们只需要删除文字水印对应的对象即可删除水印。而对于主体内容和文字水印已经混合在一个对象时,本文的提供的方法则无能为力,需要进一步深入分析PDF细节。

小小明-代码实体的专栏 2759

【动态规划】求数组不相邻元素之和最大

我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI 微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步! 知乎专栏:https://zhuanlan.zhihu.com/Microstrong Github:https://git...

Microstrong 1万+

Cisco Packet Tracert 无线路由器配置

Cisco Packet Tracert 无线路由器配置

yushan_caoyu的博客 2万+

求不相邻的最大子数组和

问题1:给出一个数组,求出其中一个子集,使得子集中每个元素在原数组中两两都不相邻并使子集的和最大。 解法:对任意一个元素ai ,有两种可能: 选ai ,单选了ai 就不能选ai-1 ;不选ai 那么ai-1 可以选也可以不选,主要根据ai-2的情况,因此动态规划是这样设计的。  ds[i] 表示选i,a0....ai的最大子数组和; ns[i]表示不选择 i,a0 ....ai 的最大子数组

feiqiangs的专栏 1944

ENSP Pro VXLAN EVPN分布式网关部署配置

在BGP EVPN方式部署分布式网关的场景中,控制平面的流程包括VXLAN隧道建立、MAC地址动态学习;转发平面的流程包括同子网已知单播报文转发、同子网BUM报文转发、跨子网报文转发。该方式实现的功能全面,支持主机IP路由通告、主机MAC地址通告、主机ARP通告,可以直接使能ARP广播抑制功能。如果在VXLAN网络中采用分布式网关,推荐使用此方式。对比集中式网关,分布式网关的arp条目比集中式网关的arp条目少,分布式网关只学习租户侧的arp条目,不学习网络侧的arp条目。

qq2353177176的博客 4559

Frida三层次钩子快速逆向VMP+OLLVM加固APK

VMP(虚拟机保护)和OLLVM(控制流平坦化)是Android应用常见的双重混淆技术,其核心原理是将Java逻辑虚拟化、Native代码控制流打散,从而阻断传统静态分析与简单Hook。但任何混淆都必须在CPU上执行,因此必然暴露JNI注册行为、ABI参数传递规律及系统调用痕迹。基于此,Frida可通过跨层联动——从JNI_OnLoad捕获Native库加载、在VMP解释器入口截获字节码上下文、于关键系统调用(如read/gettimeofday)反向追踪数据流——构建可观测、可复现的动态分析链。该方法无需

weixin_30888413的博客 1002

动态规划求不相邻的最大子数组和

问题:给出一个数组,求出其中一个子集,使得子集中每个元素在原数组中两两都不相邻并使子集的和最大。

gdrocky1989的专栏 2643

SAP SD信贷管理实战:从配置到风险控制的完整指南(附后台路径)

本文详细解析了SAP SD信贷管理的完整配置流程与风险控制策略,涵盖信贷控制范围设置、风险分级机制及动态控制配置。通过实战案例和后台路径指引,帮助企业实现从客户信用评估到实时监控的全流程管理,有效降低坏账风险并优化资金安全。

3a9bq4r8t2y的博客 212

不相邻的最大子数组和

不相邻的最大子数组和问题描述给一个数组,数组元素为不小于零,求和最大的子数组,其中每个元素在原数组中不相邻。解题思路刚拿到题目可能隐约觉得是个dp问题,求前i个元素的最大子数组和,但还是有点手足无措,关键是将问题分情况讨论:前i个元素的最大子数组包含第i个元素和不包含第i个元素。 包含第i个元素,则一定不能包含第i-1个元素,包含第i个元素的最大子数组为不包含第i-1个元素的最大子数组和加上第i个元

lly的总结与分享 1452

IP-Guard分类管理详解

大家都知道在配置IPGUARD策略前需要做分类库进行设置和分类。 1、应用程序:可以分类,例如上班时间只能用OFFICE和WPS,记事本等办公软件,可以在分类里设置一个类 ;办公软件,在未分类里找到OFFICE,WPS等拖入心建的分类里就可以在配置策略里调用。 2、网站分类也不一样,可以按照自己方式自定义。也可以导入厂家已经收集到的网站分类。 3、邮箱分类:可以提前定义好一个或...

IP-Guard专栏 589

基于FPGA的BP神经网络Verilog设计与Matlab仿真

BP(Backpropagation)神经网络是一种常见且广泛应用的神经网络类型,通过反向传播算法实现训练和学习。本文将介绍如何使用Verilog语言在FPGA上设计一个简易的BP神经网络,并使用Matlab进行仿真验证。BP神经网络由输入层、隐藏层和输出层组成。在上述Verilog代码中,我们定义了BP神经网络的输入层、隐藏层和输出层的神经元数量,并声明了相应的信号和参数。在上述Verilog代码中,我们定义了BP神经网络的输入层、隐藏层和输出层的神经元数量,并声明了相应的信号和参数。

2301_79326254的博客 560

元素互不相邻的最大和子数组

题目对于一个给定的数组,在其中选取其子数组,要求相邻的元素不能选取,且要保证选出的子数组元素和最大。输入数组长度及其元素,输出所选子数组的和。 测试输入 7 4 2 6 1 3 5 8 测试输出 17 分析1为了让子数组和最大,应该尽可能让它包含更多的元素;并且相邻元素不能选取,则只需要分析连续的三个元素的关系即可。按照第ii个元素是否被选取,前ii个元素的和要么与前i−1i-1个元素的和相同

zhufenghao 4716

华为OD机试 - 第k个排列 - 全排列递归(Python/JS/C/C++ 2025 C卷 100分)

给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有n!按大小顺序升序列出所有排列的情况,并一一标记当n=3时,所有排列如下“123”,“132,“213”,“231”,“312”,“321”输入两行,第一行为n,第二行为k,给定n的范围是[1,9],给定k的范围是[1,n!排列为“12”和“21”,第2个是“21”。给定n和k,返回第k个排列。输出排在第k位置的数字。只有一个排列,直接返回。

学Java,找哪吒 983

求数组的最大的非邻接子数组之和

动态规划    对数组 a[i], i = 1, 2, 3, ..., N , 结果是 f[N] f[1] = a[1] f[2] = max (a[1], a[2]) f[n + 2] = max(f[n + 1], f[n] + a[n + 2])

~。~||| 583

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

给定一个数组,找出这个数组最大连续子数组的和

将这个连续子数组分为两部分,一个是前缀,一个是后一个元素,要使这个连续子数组最大,那么它的前缀肯定不能为负,不然这个前缀对即将加上的值就无意义,用一个max记录最大值,每次当前缀加上后一个元素的时候判断和是否大于max,大于则更新max,再判断和是否小于0,小于0则将前缀更新为0,继续加下一个元素,依次类推,直到数组末尾,max即为最大子数组和。代码如下: public class So...

我的酒馆,名叫夜未央 3921

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数组不相邻元素之和的最大值

数组不相邻元素之和的最大值 一、题目描述 今天下午面试老虎证券,被问到这题,当时脑子有点蒙,代码没写出来。这题的意思就是给你一个数组,让你计算元素的和,但是这些元素都不能相邻,求最大的和。其实这题很常见,在leetcode上面也有,但是原题是这样的: 假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束...

张康的博客 5886

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++编程-最大子数组和-数据结构

题目: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [5,4,-1,7,8] 输出:23 提示: 1 <= nums.length <= 105 -104 <=

weixin_43979090的博客 1371

不相邻最大子序列和(C++牛客网)

不相邻最大子序列和(C++牛客网)

coolsunxu的博客 403

记录---求数组中不相邻元素的最大和(动态规划)

输入一个只含正数的数组,找到数组满足条件的元素的最大和,条件是:组成最大和的所有元素不能相邻,比如输入数组[1 2 4 1 7 8 3],返回15(1+4+7+3) import java.util.Scanner; /** * 数组中不相邻数字相加最大和 * */ public class DP1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Stri

qq_37021992的博客 1848

数组不相邻元素最大和的解法(动态规划)

给定数组,要求不相邻元素组成的子数组的和最大. public class Test { public static void main(String[] args) { int[] arr = {1, 3, 5, 2, 7, 9, 4, 8, 6}; System.out.println(maxNoNeighborhoodSum(arr)); } public static int maxNoNeighborho...

远方的少年 1458

输油管道问题(求中位数)

问题描述:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? 编程任务: 给定n 口油井的位置,编程计算各油井到主管道之间的输油管道最小长度总和. ...

点点滴滴 760

求非连续最大子数组

题目:给出一个数组,求出最大非连续子数组,返回该子数组元素之和。要求子数组中元素在原数组中不能相邻。示例:数组{3,5,7,9,-2},最大非连续子数组为{5,9},返回14.思路:使用max数组记录截止到第i个元素时,最大非连续子数组元素之和,max[0]=arr[0],max[1]=Max(max[0],arr[1]),           max[i]=Max(max[i-1],max[i-...

lccrun的博客 1343

给定整数数组,找到具有最大和的连续子数组(至少包含一个数字)并返回其和

可采用动态规划算法,自底向上求解: 考虑到对于数组中每个位置,只要求得以该位置为末节点的连续子数组长度的最大和,即可得到最终结果: f(n) = max( f(n-1) + array[n], array[n] ) def maxSubArray(self, nums: List[int]) -> int: cur = -float('inf') maxV...

王九思的博客 2377

53. 最大子数组和(C++实现)

文章目录53. 最大子数组和思路1--贪心思路2--动态规划 53. 最大子数组和 53. 最大子数组和 思路1–贪心 由于要求最大子数组的和,并且连续的,我们就可以通过贪心一直获取数据,一旦发现,加上数组元素结果和为正数,说明接下来继续选取数据有可能使得结果和是更大的值,一旦发现,加上数组元素是结果和是负数,那么我们就可以去掉之前区间的和的值,重新选取新区见继续贪心下去; class Solution { //贪心: //思路:只要遍历找一直加,一旦加到数字为负数,那么就跳过该序列

呋喃吖的博客 2329

动态规划 求数组中不相邻元素的最大和

有一个数组:arr = [1, 2, 4, 1, 7, 8, 3] 找出相加最大的和,选择的数不能相邻 该数组解为 1,4,7,3 和为15 题解: b站视频讲解 https://www.bilibili.com/video/BV12W411v7rd?from=search&seid=16185215057279292603 从最后一个来是按照递归的思想,动态规划的思想是从数组的第三个元素开始,选或不选,然后求最大值,将值赋给opt数组,如此循环直到arr数组的最后一个,结束,返回op.

柒哥的博客 1506

在给定的数组中寻找“和最大”的那个子数组

问题:在给定的数组中寻找“和最大”的那个子数组来源:http://topic.youkuaiyun.com/u/20080507/13/86742668-0c78-404d-8bf0-d7bd515dbd9b.html这是我的代码,测试了几下没有发现问题,但是还不知道正确否。待大家检验。发现问题要告诉我啊!package niko7.csdn;import java.util.ArrayList;im

niko7的专栏 1255
上一篇: 这鸡蛋真难吃
下一篇: 在一个循环有序的数组里查找特定值
rabbitbug
博客等级 码龄24年 40粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值