由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - max sub vector sum 问题
相关主题
Maximum Contiguous Subarray问个leetcode的题
问个外循环和内问题C++ 程序求助
问一个java的基本问题问一个java的函数调用问题
返回字符串所有的 combination请教一下subset I 输出子集顺序问题
有好的merge有序数组算法么array 转换成 linkedlist, 在线等, 挺急的--help is still nee
最长递增子array的算法问一个static variable上锁的问题
求教:贪心算法找零钱的精度问题?电话中写 code,不是给做弊的机会吗
programming pears上的maximum subarray算法是不是有小bug?谁能猜猜,这是个什么 algorithm?
相关话题的讨论汇总
话题: maxsofar
进入JobHunting版参与讨论
1 (共1页)
s*****o
发帖数: 1540
1
一个经典问题:a vector x of n real numbers. find the max sum found in any
contiguous sub vector。
大家知道,programming pearl的解法是:
maxsofar = 0;
maxendinghere = 0;
for i = [0, n)
maxendinghere = max (maxendinghere + x[i], 0);
maxsofar = max (maxsofar, maxendinghere);
我改动一下,要输出究竟是那个sub vector,请大侠指教是不是正确。
public class MaxSubVector {
static public void findBigestSum(double[] x)
{
double maxsofar = 0;
double maxendinghere = 0;
int maxsofarlow = -1;
int maxsofarhigh = -1;
int maxendinglow = -1;
int maxendinghigh = -1;

for (int i = 0; i < x.length; i ++ )
{
if (maxendinghere + x[i] > 0)
{
maxendinghigh = i;
if (maxendinglow == -1) maxendinglow = i;
maxendinghere = maxendinghere + x[i];
}
else
{
maxendinglow = -1;
maxendinghigh = -1;
maxendinghere = 0;
}

if (maxendinghere > maxsofar)
{
maxsofarlow = maxendinglow;
maxsofarhigh = maxendinghigh;
maxsofar = maxendinghere;
}
}
System.out.println("x = " + x.toString());
System.out.println ("maxsofar = " + maxsofar + " low: "
+ maxsofarlow + " high: " + maxsofarhigh);
if (maxsofarlow != -1 && maxsofarhigh != -1)
{
System.out.print ("[");
double sum2 = 0;
for (int i = maxsofarlow; i <= maxsofarhigh ; i ++)
{
System.out.print (x[i] + " ");
sum2 += x[i];
}
System.out.println ("]");
System.out.println ("Second sum is: " + sum2);
}
else
System.out.println ("Empty sub vector");
}
public static void main(String[] args) {
double x1[] = {-1, 1, -3};
findBigestSum(x1);
double x2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
findBigestSum(x2);
double x3[] = {-1, -1};
findBigestSum(x3);
double x4[] = {-1, 2, -1};
findBigestSum(x4);
}
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
谁能猜猜,这是个什么 algorithm?有好的merge有序数组算法么
LRU question最长递增子array的算法
[算法]打印所有因子乘积组合求教:贪心算法找零钱的精度问题?
发一个有趣的java题programming pears上的maximum subarray算法是不是有小bug?
Maximum Contiguous Subarray问个leetcode的题
问个外循环和内问题C++ 程序求助
问一个java的基本问题问一个java的函数调用问题
返回字符串所有的 combination请教一下subset I 输出子集顺序问题
相关话题的讨论汇总
话题: maxsofar