最大连续子序列和 分治思想和动态规划思想
来源:互联网 发布:java oracle数据库连接 编辑:程序博客网 时间:2024/06/05 02:25
解决最大连续子序列和的两种方法:分治,动态规划。
分治时间复杂度虽然更高,但我还是写了一遍加深对这种思想的理解:将一个问题分治成若干个小的同样思路的子问题来解决。本题将所求序列等分成左右两个子序列,愿序列的最大子序列和必是左序列最大子序列和,有序列最大子序列和,跨左右子序列最大和三者中的最大者。
动态规划:用dp[i]更新dp[i+1]就行。
分治:
//// main.cpp// 1109//// Created by Fangpin on 15/3/9.// Copyright (c) 2015年 FangPin. All rights reserved.//#include <iostream>#include <cstdio>#include <cstring>using namespace std;int a[104];int f(int l,int r){ int m=(l+r)>>1; if(l>=r) return a[l]; int left=f(l,m); int right=f(m+1,r); int mid=-1e10,sum=0; for(int i=m;i>=0;--i){ sum+=a[i]; mid=max(mid,sum); } sum=0; int maxn=-1e10; for(int i=m+1;i<=r;++i){ sum+=a[i]; maxn=max(maxn,sum); } mid+=maxn; if(left>=mid && left>=right) return left; else if(right>=left && right>=mid) return right; else return mid;}int main(int argc, const char * argv[]) { // insert code here... int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%d",&a[i]); printf("%d\n",f(0,n-1)); } return 0;}
动态规划:
//// main.cpp// 1109//// Created by Fangpin on 15/3/9.// Copyright (c) 2015年 FangPin. All rights reserved.//#include <iostream>#include <cstdio>#include <cstring>using namespace std;int a[104],dp[104];int main(int argc, const char * argv[]) { // insert code here... int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); dp[0]=a[0]; int ans=a[0]; for(int i=1;i<n;++i){ if(dp[i-1]>0) dp[i]=dp[i-1]+a[i]; else dp[i]=a[i]; ans=max(ans,dp[i]); } printf("%d\n",ans); } return 0;}
0 0
- 最大连续子序列和 分治思想和动态规划思想
- 子序列最大连续和(动态规划、分治)
- [动态规划]最大连续子序列和
- 最大连续子序列和-动态规划
- 最大连续子序列和----动态规划
- 动态规划? 最大连续子序列和
- 动态规划:最大连续子序列和
- 最大连续子序列和-动态规划
- 分治策略结合递归思想求最大子序列和
- hdu1231 连续子数组最大和(分治,动态规划)
- 【动态规划】最大连续序列和最大子矩阵
- 最大连续子序列和:递归和动态规划
- 最大子序列求解 分治法和动态规划
- HDU 1231(最大连续子序列)动态规划-最大连续子序列和
- 动态规划求解最大连续子序列和
- 动态规划经典题目:最大连续子序列和
- 动态规划6_最大连续子序列和
- 动态规划法-------最大连续子序列和
- jsp页面传到后台的参数为乱码
- ios-day10-01(模仿点菜系统。UIPickerView的使用、如何产生随机数等)
- strlen,wcslen,lstrlen,sizeof及wstring
- Android中shape的使用
- [Android疑难杂症]动态改变Background后Padding无效的问题
- 最大连续子序列和 分治思想和动态规划思想
- Python 学习(第一部分) Q&A对话
- IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
- Cookie介绍及JavaScript操作Cookie方法详解
- Android 文件关联
- Multivision面试材料准备学习之HTML
- Spring MVC使用Quartz定时执行
- 下一代数据中心演变的五个方向
- android 自定义View过程解析