最大子串问题(The Maximum-subarray Problem)
来源:互联网 发布:mmd如何载入动作数据 编辑:程序博客网 时间:2024/05/17 22:56
brute-force法
typedef struct {
int max_left;
int max_right;
int maximum;
}maxinfo;
maxinfo bruteforce(int A[], int len)
{
maxinfo max;
max.max_left= 0;
max.max_right= 0;
max.maximum= 0;
inti, j;
for(i = 0; i < len; i ++)
{
intsum = A[i];
intimax = A[i];
intmax_j = i;
for(j = i + 1; j < len; j ++)
{
sum= sum + A[j];
if(sum > imax)
{
imax= sum;
max_j= j;
}
}
if(imax > max.maximum)
{
max.max_left= i;
max.max_right= max_j;
max.maximum= imax;
}
}
returnmax;
}
分治法
typedefstruct {
intmax_left;
intmax_right;
intmaximum;
}maxinfo;
maxinfo
find_crossing_max_subarray(int a[], int low, int mid, int high)
{
inti;
intsum = 0;
intleft_sum = -32767;
maxinfomax;
for(i = mid; i >= low; i--)
{
sum= sum + a[i];
if(sum > left_sum)
{
left_sum= sum;
max.max_left= i;
}
}
intright_sum = -32767;
intj;
sum= 0;
for(j = mid + 1; j <= high; j ++)
{
sum= sum + a[j];
if(sum > right_sum)
{
right_sum= sum;
max.max_right= j;
}
}
max.maximum= left_sum + right_sum;
returnmax;
}
maxinfofind_max_subarray(int a[], int low, int high)
{
maxinfomax;
if(low == high)
{
max.max_left= low;
max.max_right= high;
max.maximum= a[low];
returnmax;
}
intmid = (low + high)/2;
maxinfomax_left, max_cross, max_right;
max_left= find_max_subarray(a, low, mid);
max_right= find_max_subarray(a, mid + 1, high);
max_cross= find_crossing_max_subarray (a, low, mid, high);
if(max_left.maximum > max_right.maximum && max_left.maximum> max_cross.maximum)
returnmax_left;
elseif (max_right.maximum > max_left.maximum &&max_right.maximum > max_cross.maximum)
returnmax_right;
else
returnmax_cross;
}
- 最大子串问题(The Maximum-subarray Problem)
- 最大子数组(The maximum-subarray problem)
- 最大子树问题(The maximum-subarray problem)
- LeetCode Maximum subarray,最大子串问题
- 最大子数组(maximum subarray)问题
- 最大子串和问题(Maximum Subarray)
- 最大子串和问题(Maximum Subarray)
- leetcode笔记:Maximum Subarray(最大子串和问题)
- 最大子串和问题(Maximum Subarray)
- 最大子串和问题(Maximum Subarray)
- 【算法导论学习-007】最大子数组和问题(Maximum subarray problem)
- 最大子数组和(The Maximum Subarray)
- 53. Maximum Subarray动态规划求解最大子串问题
- Maximum Subarray【最大子串和问题】【容易】
- 53. Maximum Subarray 最大子串和问题
- Maximum subarray -- 最大子数组问题(C++)
- 最大子数组问题 Maximum Subarray
- The Maximum Subarray Problem
- 单例模式(Singleton)
- DMO,DirectX媒体对象(DirectX Media Objects,简称DMOs)
- 引用 “内存指令不能为read”的一般解决方法:
- 【算法】随机化快速排序【JS实现】
- 【转载】JSTL使用全套攻略
- 最大子串问题(The Maximum-subarray Problem)
- 企业如何选择Hadoop
- typeof在linux中妙用
- 音视频开发学习(-)续,协议
- linux部署服务器常用命令
- 部署web应用流程
- 字符编码笔记:ASCII,Unicode和UTF-8(转)
- ubuntu12.04软件配置
- DMO播放wma简单实例