求最大子序列算法
2016-03-13 22:02
169 查看
int MaxLeft,MaxRight;
int MaxSubseqsum3 (int A[],int N)
{
int ThisSum=0,MaxSum=0;
int SumLeft=0,SumRight;
int i;
for(i=0;i<N;i++)
{
SumRight=i; //当前子列和右端
ThisSum += A[i]; //向右累加
if(ThisSum>MaxSum)
{
MaxSum=ThisSum; //发现更大和则更新当前结果
MaxLeft=SumLeft;//最大子列和左端
MaxRight=SumRight;//最大子列和右端
}
else if(ThisSum < 0)//如果当前子列和为负
{
ThisSum = 0; //则不可能使后面的部分和增大,抛弃之
SumLeft=i+1; //当前子列和左端
}
}
return MaxSum;
}
可以求出最大子序列
int maxsub(const int a[],int n)
{
int sum, max, i, j, begin, end;
begin = end = max = 0;
for(i = 0;i < n;i++)
{
sum = 0;
for(j = i;j<n;j++)
{
sum += a[j];
printf("the second level loop %d loop sum = %d\n",j,sum);
printf("the second level loop %d loop max = %d\n",j,max);
if(sum > max)
{
max = sum;
begin = i;
end = j;
}
}
printf("the %d loop max = %d\n",i+1,max);
}
printf("--final-- Begin = %d, End = %d\n",begin,end);
int MaxSubseqsum3 (int A[],int N)
{
int ThisSum=0,MaxSum=0;
int SumLeft=0,SumRight;
int i;
for(i=0;i<N;i++)
{
SumRight=i; //当前子列和右端
ThisSum += A[i]; //向右累加
if(ThisSum>MaxSum)
{
MaxSum=ThisSum; //发现更大和则更新当前结果
MaxLeft=SumLeft;//最大子列和左端
MaxRight=SumRight;//最大子列和右端
}
else if(ThisSum < 0)//如果当前子列和为负
{
ThisSum = 0; //则不可能使后面的部分和增大,抛弃之
SumLeft=i+1; //当前子列和左端
}
}
return MaxSum;
}
可以求出最大子序列
int maxsub(const int a[],int n)
{
int sum, max, i, j, begin, end;
begin = end = max = 0;
for(i = 0;i < n;i++)
{
sum = 0;
for(j = i;j<n;j++)
{
sum += a[j];
printf("the second level loop %d loop sum = %d\n",j,sum);
printf("the second level loop %d loop max = %d\n",j,max);
if(sum > max)
{
max = sum;
begin = i;
end = j;
}
}
printf("the %d loop max = %d\n",i+1,max);
}
printf("--final-- Begin = %d, End = %d\n",begin,end);
相关文章推荐
- 递归算法——约瑟夫问题
- 聊聊数据库(MySql)连接吧,你真的清楚吗?
- Jetty入门
- 机器学习——梯度下降法
- java面试题
- Android 6.0中新的权限模型介绍
- [bzoj2724]蒲公英
- tomcat构建及session保持
- 不设置尾指针的链表作为链队列的存储结构
- 内联函数
- ActivityMQ android开发
- 实现栈的逆序 递归 不申请额外的数据结构
- win10Java 环境配置
- 20145337 《Java程序设计》第二周学习总结
- EL表达式
- uva10330 (最大流 & 超级源点汇点的构建 & EK算法)
- hdu 3642 Get The Treasury (三维的扫描线)
- 第三周机电作业
- 20145223《Java程序程序设计》第2周学习总结
- LeetCode:103Binary Tree Zigzag Level Order Traversal