求最大子序列的算法
来源:互联网 发布:perl语言编程 第四版 编辑:程序博客网 时间:2024/05/25 01:35
问题:
给定一个序列,求它的一个连续子序列,使其值在所有子序列中最大,每个元素可以为负数。
分析:
用归纳法,当我们知道了(X1 X2 … Xi-1)的最大序列后,那么加入Xi后会需要考虑两种情况:第一,原来的最大值不受影响;第二,包括Xi的后缀序列成了最大值,因此我们在遍历的过程中,需要保留这两个最大值。
#include <stdio.h>
#include <stdlib.h>
double find_subserial(double x[],int n)
{
double global_max = 0; //save the global max value
double suffix_max = 0; //save the suffix max value
int i;
for(i=0;i<n;i++)
{
if( suffix_max + x[i] > global_max)
{
global_max = suffix_max = suffix_max + x[i];
}
else if( suffix_max + x[i] > 0 )
{
suffix_max = suffix_max+x[i];
}
else
{
suffix_max = 0;
}
}
return global_max;
}
int main(int argc,char * argv[])
{
double * temp;
int i;
temp = (double *)malloc( (argc-1) * sizeof(double) );
for(i=1;i<argc;i++)
{
temp[i-1] = atof(argv[i]);
printf("%g ",temp[i-1]);
}
printf("/n");
printf("The max is %g /n",find_subserial(temp,argc-1));
return 0;
}
- 求最大子序列的算法
- 求最大子序列的线性算法
- 求最大子序列算法
- 求最大的子序列和的算法
- 求最大子序列和的两种算法
- 求数组子序列最大和的算法
- 求所有最大公共子序列的算法实现
- 求数组中的最大子序列的值最优算法
- 求所有最大公共子序列的算法实现
- 求所有最大公共子序列的算法实现
- 求所有最大公共子序列的算法实现
- 求所有最大公共子序列的算法实现
- 求最大子序列和--体会算法的魅力
- 求所有最大公共子序列的算法实现(转)
- 求所有最大公共子序列的算法实现(转)
- 算法复习------求数组的最大子序列
- 求最大子序列和的分而治之算法
- 联机算法求最大子序列和
- Martin Fowler上海交流实录:关于“RUP是楷书,XP是草书”的对话
- BufferedReader类 示例
- 使用 HttpWebRequest 轻松实现站外提交(可用于自动登陆,自动网上投票等) (转)
- 某个线程上创建的控件不能成为在另一个线程上创建的控件的父级(转)
- Martin Fowler上海交流实录:谈谈敏捷
- 求最大子序列的算法
- VB.net 跟 C# 的代码转换
- VB.NET and C# 语法比较手册
- 书签保存的位置
- DBGrid单击标题自动排序
- CVS导入项目时某些文件不能正常导入的原因
- Oracle 9i以后XMLDB占用8080端口的修改
- asdasdasdasdasdasdfgfdg
- 构造函数