最大子段和

最大子段和

最大子段和:给出一个数组,计算其中连续的最大的子段和


运行代码,及运行思想:

/** * 动态规划:计算最大子段和 * 算法描述: * 数组a 有n个元素, 记 s[i] 为从a【0】到a[i]中,包含a[i]的最大子段和 * 则: s[i] 的值为: s[i-1]>0时, s[i-1]+a[i] * 否则 a[i] */ #include <stdio.h> #include <stdlib.h>
int maxSub(int *a, int n) { int i=0, max=0, max_pos = 0; int si_1=0, si = 0;//分别记录s[i-1], 和 s[i]的值
    int *p = (int *)malloc(n*sizeof(int)); //p[i] 助于记录哪些单元被选择, p[i]=1 表示s[i]计算的结果中中使用了s[i-1]的值
    
    if (p==NULL) return -1; max = si_1 = a[0]; p[0] = 0; for (i=1; i<n; i++) { if (si_1<0) { p[i] = 0; si = a[i]; } else { p[i] = 1; si = si_1+a[i]; } si_1 = si; if (si>max) { max = si; max_pos = i; } } //找到最大子段和的位置
    for (i=max_pos; i>=0; i--) if (p[i]==0) break; //即i..max_pos为最大子段和的元素
    printf("%d--%d:%d\n", i, max_pos, max); free(p); p = NULL; return max; } int main() { int n = 10; int a[10] = {
    3, 5, 6, 10, -2, -5, 3, 5, -112, -324}; maxSub(a, n); return 0; }

源代码摘自:http://blog.csdn.net/chaoyue1216/article/details/6870339

运行结果:

最大子段和

最大子段和

转载于:https://my.oschina.net/u/204616/blog/545172

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100865.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • go语言要学多久才能工作_go语言可以开发什么

    go语言要学多久才能工作_go语言可以开发什么我在2011年就听说了Go并学习了一段时间,坦白的说,那时候对Go是比较无感的,因为并没有看到Go的特别亮眼的地方,可能和我使用C、Erlang、Java有关,这三种语言可以写高性能、高并发、高可用的服务;包含了面相过程、面向并发、面向对象的思想,我觉得我并不需要再学习Go,何况那个时候好像也没宣传的那么优秀。 一切都发生在418天前,因为工作的需要,我开始写Go了,本来预期是一段压抑、蛋疼的旅程

    2022年10月5日
    0
  • pycharm2022.01.13怎么激活_在线激活[通俗易懂]

    (pycharm2022.01.13怎么激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1PA3AFINM4-eyJsaWNlb…

    2022年3月31日
    59
  • 给 iTerm 终端设置代理

    给 iTerm 终端设置代理

    2021年5月12日
    118
  • vue文件下载功能_vue实现下载功能

    vue文件下载功能_vue实现下载功能vue下载文件常用的几种方式一、直接打开直接打开是指我们直接使用window.open(URL)的方法优点:简单操作缺点:没办法携带token二、我们可以自己封装一个方法,比如如下:importaxiosfrom”axios”import*asauthfrom’@/utils/auth.js’letajax=axios.create({baseURL:process.env.VUE_APP_BASE_API,timeout:100000}

    2022年10月24日
    0
  • bug生命周期流程_bug六大要素

    bug生命周期流程_bug六大要素你们公司是如何管理bug的?考查点:缺陷的生命周期常见的流程就不多说了,CSDN上有很多,今天说一些不一样的点:正常流程:打开–接受–已解决-关闭其它状态:拒绝、重新打开、遗留1、线上的bug优先级最高,会要求测试leader亲自协助运营、开发人员定位,邮件报告相关领导:bug分析、开发人员如何修改,有哪些影响范围,bug修改进度,开发和测试的改进措施;2、测试环境的典型b…

    2022年10月20日
    0
  • 计算机清理垃圾代码,你也可以写代码系列,一键清除系统垃圾文件的代码(超简单)-清除垃圾文件…

    计算机清理垃圾代码,你也可以写代码系列,一键清除系统垃圾文件的代码(超简单)-清除垃圾文件…电脑使用久了,系统或者软件就会产生大量的日志文件、临时文件等垃圾文件。这些垃圾文件日积月累,不仅会大量占用磁盘空间,也会严重拖慢系统运行速度。所以定时清理垃圾文件十分有必要。我们可以手动删除,也可以借助本文提供的批处理自动删除。1,创建一个清除垃圾的.bat文件(1)在桌面上单击鼠标右键,选择“新建”选择“文本文档”(2)将新建的文件改名为“垃圾文件清除.bat”(注意.txt后缀要记得删掉)…

    2022年6月18日
    118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号