动态规划之最大子段和
来源:互联网 发布:windows 9 编辑:程序博客网 时间:2024/06/02 10:41
若最大子段和记:b[j]=max(a[i]+a[i+1]+..+a[j]),其中1<=i<=j,并且1<=j<=n。则所求的最大子段和为max b[j],1<=j<=n。
int sum=0, b=0,start=0,end=0,n=a.length;
for(int i=1;i<=n;i++)
{
if(b>0)
b=b+a[i-1];
else
{
b=a[i-1];
start=i;
}
if(b>sum)
{
sum=b;
end=i;
}
}
System.out.println("the max value:");
System.out.println("start="+start+" end="+end);
}
由b[j]的定义可易知,当b[j-1]>0时b[j]=b[j-1]+a[j],否则b[j]=a[j]。故b[j]的动态规划递归式为:
b[j]=max(b[j-1]+a[j],a[j]),1<=j<=n。
b[j]=max(b[j-1]+a[j],a[j]),1<=j<=n。
实现代码:
public static void maxsub(int []a)
{int sum=0, b=0,start=0,end=0,n=a.length;
for(int i=1;i<=n;i++)
{
if(b>0)
b=b+a[i-1];
else
{
b=a[i-1];
start=i;
}
if(b>sum)
{
sum=b;
end=i;
}
}
System.out.println("the max value:");
System.out.println("start="+start+" end="+end);
}
0 0
- 动态规划之最大子段和
- 动态规划之最大子段和
- 动态规划之最大子段和问题
- 动态规划之最大子段和问题总结
- 动态规划之最大子段和问题
- 动态规划入门之最大M子段和
- 动态规划之最大子段和问题
- 最大子段和之动态规划法
- 动态规划之P1115 最大子段和
- 动态规划之最大子段和问题
- 动态规划之最大子段和问题
- 动态规划----最大子段和
- 最大子段和(动态规划)
- 最大子段和动态规划实现
- 最大子段和(动态规划)
- 【动态规划】最大m子段和
- 动态规划 - 最大子段和
- 最大子段和-分治&&动态规划
- nutch v1.9源码分析(3)——nutch基本爬取流程
- 正则表达式基本语法
- hdu1003 最大连续子序列和
- C语言学习入门 (七) 结构体和枚举
- sobel算子(转)
- 动态规划之最大子段和
- [Perl] Find Shell on your Wordpress site
- ajax跨域请求的解决方案
- emacs 多窗口
- HTTP代理协议
- linux基础常用命令-第二课
- next_permutation函数
- 多点触摸缩放层
- Linux下如何查看系统启动时间和运行时间