分治法和动态规划法解最大子序列问题 C++
来源:互联网 发布:mac战网四合一 编辑:程序博客网 时间:2024/06/06 00:09
分治法:
class Solution {public: int maxCross(int A[], int low, int high) { int mid = (low + high)/2; int leftsum = A[mid]; int sum = 0; for (int i = mid; i >= low; i--) { sum = sum + A[i]; if (sum > leftsum) leftsum = sum; } int rightsum = A[mid+1]; sum = 0; for (int j = mid+1; j <= high; j++) { sum = sum + A[j]; if (sum > rightsum) rightsum = sum; } return (rightsum + leftsum); } int maxFind(int A[], int low, int high) { int mid; if (low == high) return A[low]; else { mid = (low + high)/2; int left,right, cross; left = maxFind(A, low, mid); right = maxFind(A, mid+1, high); cross = maxCross(A, low, high); return max(max(left,right), cross); } } int maxSubArray(int A[], int n) { int sum; sum = maxFind(A, 0, n-1); return sum; }};
动态规划法:
class Solution {public: int maxSubArray(int A[], int n) { int s[n]; int sum; s[0] = A[0]; for (int i = 1 ; i < n ; i++) { s[i] = max(s[i-1] + A[i], A[i]); } sum = s[0]; for (int i = 1 ; i < n ; i++) { if (s[i] > sum) sum = s[i]; } return sum; }};
0 0
- 分治法和动态规划法解最大子序列问题 C++
- 最大子序列求解 分治法和动态规划
- 子序列最大连续和(动态规划、分治)
- 运用分治法和动态规划方法求解最大子数组问题
- 分治法求最大子序列和问题
- 最大子段和-分治&&动态规划
- 动态规划法求最大子序列和
- 动态规划法-------最大连续子序列和
- 分治法求最大子序列和
- 算法设计与分析--求最大子段和问题(蛮力法、分治法、动态规划法) C++实现
- 动态规划_最大子序列和问题以及最大子序列问题
- 最大子序列和问题(动态规划)
- 算法/动态规划/MaxSum最大子序列和问题
- 最大子序列 分治法
- 最大连续子序列和 分治思想和动态规划思想
- 最大连续子数组(分治法、动态规划)
- 最大子序列和问题 分治算法
- 和最大子序列---动态规划
- 在做iframe自适应的时候,iframe高度不断自增长
- Masonry介绍与使用实践:快速上手Autolayout
- web 跨域请求共享资源(OCRS)
- 商场促销-策略模式
- MyEclipse 6.5 配置 Tomcat7
- 分治法和动态规划法解最大子序列问题 C++
- Processing Bitmaps Off the UI Thread
- linux期末复习知识点小结(一)——Introduction
- 设计模式(五)适配器
- 【Jenkins系列之一】Jenkins持续集成环境搭建完全指南
- MFC中获取各个窗口(对话框)之间的指针、对象、句柄
- Caching Bitmaps
- bzoj 2761 题解
- Domino Calendar REST API性能调优 之 代码篇