最大字段和(动态规划,C语言)
递推关系
对于数组A[]={1,2,3,-4,-3,2,1},
如果有一个函数endsum(j),求出以位置j为终止点的最大子段和,则满足
if(endsum(j-1)>0)
endsum(j)=endsum(j-1)+A[j]
else
endsum(j)=A[j] 因为此时A[j]前面的元素只能降低和
上述递推关系是针对endsum
而最大子段和maxsum= max(endsum(0),endsum(1),...endsum(N-1))
测试说明
平台会对你编写的代码进行测试:
输入两行,第一行代表数组长度n,第二行是n个元素,假设n<10000
测试输入:
7 1 2 3 -4 -3 2 1
预期输出:
6
解析:
计算一段的值,如果这一段的值大于0,则遍历后一个值时可以直接加上,因为加上一定大于当前遍历的值,若这一段值小于0,那么直接更新段值,因为前面的值加上一定会变小,所以直接抛弃,在每次更新时都与最大值max进行比较,若大于max则更新,最后返回max即可。
# include<stdio.h>int main(){int n;scanf("%d", &n);int a[n]={0};for(int i = 0;i<n;i++){scanf("%d", &a[i]);}int max = 0; # 最大值int tem = 0; # 段值for(int i=0;i<n;i++){if(tem>0) # 前面一段值大于0tem+=a[i];else{ # 前面一段值小于0tem=a[i]; # 抛弃前面的段值,更新段值}if(tem>max){ # 更新最大值max=tem;}}printf("%d", max);return 0;
}
最大字段和(动态规划,C语言)相关推荐
- sql 字段相减_R语言ETL系列:创建字段(mutate)
作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘.社交网络分析和机器学习等.希望与大家分享学习经验,推广并加深R语言在业界的应用. 邮箱:huang.tian-yuan@qq.com 有没有一些时 ...
- 0-1背包问题 动态规划c语言,详解动态规划01背包问题--JavaScript实现
一开始在接触动态规划的时候,可能会云里雾里,似乎能理解思路,但是又无法准确地表述或者把代码写出来.本篇将一步一步通过作图的方式帮助初次接触动态规划的同学来理解问题.这一篇将以经典的 01背包 问题为例 ...
- 图像压缩算法动态规划c语言,图像压缩算法 动态规划
图片在计算机存储的是图片中的一个一个像素,也就是像素的灰度值.灰度值的范围是0~255.有灰白图像和彩色图像,它们每个像素的通道数量不同.灰白图像是单通道的,而彩色图像是3个通道的(BGR),也就是彩 ...
- sap Bydesign 中解决添加元素或者字段时,多语言翻译的问题
问题:前段时间一直在纠结在byd的原界面上添加一个字段以后,在英文状态下能显示出来,而且label属性也可以显示中文,但是切换到中文状态下的时候,居然显示空白,郁闷了,今天终于找到答案了,看来帮助文档 ...
- Leetcode 70. 爬楼梯 动态规划 c语言
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数.示例 1: 输入: 2 输出: 2 解释: 有两种 ...
- 打家劫舍(Leetcode)动态规划c语言
打家劫舍 题目描述 解题 思路 代码 运行结果 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的 ...
- 01背包.动态规划.c语言实现
二维dp数组01背包 确定dp数组以及下标的含义 使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少 2.递推公式:dp[i][ ...
- 图像压缩 动态规划C语言实现
问题描述 图像的变位压缩存储格式将所给的像素点序列{p1,p2,-,pn},0≤pi≤255分割成m个连续段S1,S2,-,Sm.第i个像素段Si中(1≤i≤m),有l[i]个像素,且该段中每个像 ...
- 钢条切割问题-动态规划-c语言实现
问题:某公司购买长钢条,将其切割后进行出售.切割钢条的成本可以忽略不计,钢条的长度为整英寸.已知价格表p,其中pi(i=1,2,...,m)表示长度为i英寸的钢条的价格.现要求解使销售收益最大的切割方 ...
- c语言动态规划优化,动态规划C语言(177页)-原创力文档
输出一个盘子的移动方案 procedure _move(number , st , ed : longint);{ 将盘子 number 从 st 柱移至 ed 柱 } begin write('mo ...
最新文章
- java ftp下载文件源码_java实现ftp文件下载的源代码
- 皮一皮:昨天是一个凄苦的节日...
- 不想 CRUD 干到老,就来看看这篇 OOM 排查的实战案例!
- 2、RabbitMQ-simplest thing(简单队列)
- [翻译]Global Descriptor Table-GDT
- 反复下蹲,你的膝盖响几下?
- 怎样让手中的钱成为生财工具
- opencomm在c语言中的作用,使用OpenMPI从Fortran调用C语言
- java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果
- idea 删除 output directory文件_郑州Java培训新手必知的IDEA高频快捷键
- 中山电子科技大学计算机学院分数线,电子科技大学中山学院
- PHPSHE 1.7前台SQL注入漏洞分析
- uc浏览器邀请码_阿里云Teambition网盘收到邀请码,上传下载不限速!!!
- 【深度学习】神经网络为何非激活函数不可?
- 香农熵、交叉熵和相对熵
- python酒店管理系统案例
- android MVX杂谈
- C++ | 初识Qt
- mac 安装typescript
- 一百元的钞票能拍卖出多少钱?
热门文章
- 日志库 winston 的学习笔记 - logger.info 的实现原理单步调试
- SAP CRM WebClient UI html 格式的 Text 显示逻辑
- Angular单元测试框架beforeEach和it的执行顺序
- JavaScript, ABAP和Scala里的尾递归(Tail Recursion)
- 如何自定义SAP Spartacus 产品明细的url pattern
- 如何使用新浪微博相册作为markdown的图床
- 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景
- 大学毕业就进入SAP,我获得了哪些收益
- standalone vue initialization process
- How to monitor your mobile application network traffic in your own LAPTOP