最大子段和
时间:2022-04-22
本文章向大家介绍最大子段和,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最大子段和:给出一个数组,计算其中连续的最大的子段和
运行代码,及运行思想:
/**
* 动态规划:计算最大子段和
* 算法描述:
* 数组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:%dn", 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
运行结果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 学生党学编程,有这个开源项目就够了!
- 【最强ResNet改进系列】Res2Net:一种新的多尺度网络结构,性能提升显著
- Java中的锁以及sychronized实现机制(十)
- Web 指纹识别之路
- RedisTemplate常用集合使用说明-opsForHash(四)
- Mybatis高级查询(二):多表联合查询
- Maven配置多仓库无效?来看看这篇文章
- Spring Boot启动slf4j提示找不到weblogic.xml日志异常
- Angular 应用的DevDependencies
- 轻量级服务网格 - osm
- 漫画:设计模式之 “外观模式”
- 使用 Zotero 在 Markdown 中优雅处理参考文献
- Mybatis plus自动生成业务代码
- 功能强大的CD工具 - flagger
- Swift defer