最大m子段和
2024-09-08 08:47:51
最大m子段和
定义一串子段s1,s2,s3 ... sn-1,sn
求m段不交叉最大子段和
解:
设dp[i][j]代表前j个数分成i段的最大和(包括a[j])
状态转移方程:
dp[i][j]=Max(dp[i][j-1]+a[j],dp[i-1][t]+a[j]) (i-1=<t<j)
解释两种状态的最优解:
①.a[j]恰好在下一次最优解末项之后,将a[j]融入a[j-1]的子段中,总段数i不变,+a[j]
②.a[j]不在最优解末项之后,而是单独成一段,那么下一次递归对象总段数-1(i-1),末项为
k,i-1=<t<j,k如果小于i-1负溢出。+a[j]
#include<cstdio>
using namespace std;
int main()
{
int n, num, cnt, ans;
while(scanf("%d", &n)!=EOF)
{
cnt = ;
for(int i=; i<n; i++)
{
scanf("%d", &num);
if(cnt==)
{
ans = num;
cnt++;
}
else
{
if(num==ans)
cnt++;
else
cnt--;
}
}
printf("%d\n", ans);
}
return ;
}
最新文章
- mstsc 远程序桌面登录的 c#开发
- Window 对象
- Speex回声消除代码分析
- Oracle 跟踪事件 set event
- Ext入门学习系列(五)表格控件(2)
- Hdu 5289-Assignment 贪心,ST表
- Google maps not working IE11
- selenium1.0和selenium2.0页面等待处理详解
- SQL VIEW(视图)
- C++ Builder中splitter控件的使用方法简介
- Redis简介二
- cookie记忆换肤功能实战Demo
- ef 增加或者更新的习惯思维
- c#上课总结
- 华为交换机MSTP+VRRP配置实例说明文档
- 详解BOM头以及去掉BOM头的方法--踩过BOM的大坑
- 笔记:IIFE 立即执行的函数表达式 +function ($) { }(window.jQuery);
- 【SSH】Hibernate关联映射
- python字典去重脚本
- jpql和sql的区别