博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大子段和
阅读量:6882 次
发布时间:2019-06-27

本文共 989 字,大约阅读时间需要 3 分钟。

hot3.png

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


运行代码,及运行思想:

/** * 动态规划:计算最大子段和 * 算法描述: * 数组a 有n个元素, 记 s[i] 为从a【0】到a[i]中,包含a[i]的最大子段和 * 则: s[i] 的值为:  s[i-1]>0时, s[i-1]+a[i] *                     否则 a[i] */#include 
#include
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
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;}

源代码摘自:

运行结果:

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

你可能感兴趣的文章
Python实践之(七)逻辑回归(Logistic Regression)
查看>>
PAT (Advanced Level) 1107. Social Clusters (30)
查看>>
【开源社群系统研发日记五】ThinkSNS+ 是如何计算字符显示长度的
查看>>
Nodejs日志管理log4js
查看>>
Bat 脚本实现监控进程功能
查看>>
Js判断是否联网引入不同js
查看>>
pwnable.kr bof之write up
查看>>
Sql语句查询某列A相同值的另一列B最大值的数据
查看>>
技术串讲 CAS 有用
查看>>
怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
查看>>
Tensorflow学习笔记(1):tf.slice()函数使用
查看>>
ORA-01102的解决办法
查看>>
奇怪的iphone6 plus,H5调用拍照浏览器崩溃
查看>>
MVC接受JSON的一些注意事项
查看>>
response对象设置输出缓冲大小
查看>>
MVC+Ninject+三层架构+代码生成 -- 总结(七、顯示層 一)
查看>>
[CF1105D]Kilani and the Game
查看>>
[bzoj4195][Noi2015]程序自动分析
查看>>
简单的bfs(最短路径)c++
查看>>
Matlab2013a许可证过期问题,反复提示激活
查看>>