如果子串行都是正數,那麼該子串行一定是最大和得子串行的一部分。如果下乙個數為負數,那麼需要判斷該負數和當前子串行的和是否未正。如果是負數,那麼我們可以認為包含這個負數的子串行一定不是最大子串行。但是如果為正數,我們還需要繼續判斷後續節點是否可以使得最大和增加。例如1,2,-2,4顯然1,2,-2,4為最大子串行。但是如果1,2,-2,1那麼最大子串行應該為1,2.。那麼用該方法判斷可以在o(n)的時間複雜度找出最大和得子串行。
void getmaxsumsubarray(int* list, int length)
int* result = new int[length];
int currentsum = 0;
int currentpos = 0;
int maxsum = 0;
int maxend = 0;
for(int i = 0; i < length ; ++i)
else if(list[i] + currentsum > 0)
else
if(currentsum > maxsum)
}for(int i = 0; i < maxend ; ++i)
delete result;
}
連續子串行最大和
這道題目使用最大和問題的分治演算法 package com.divide.cc author sunnyboy runtime is o nlogn public class sumsequence int maxsum maxsubsequencesum a system.out.println ...
不相鄰子串行最大和
include include using namespace std int msnae vector nums int incl nums 0 incl表示當可以包含nums i 時,前i個元素所能達到的最大值 初始化為第乙個元素 int excl 0 excl表示不包含第nums i 時,前i...
連續子串行最大和問題
author wawlian 連續子串行最大和問題 public class maxsubsequence return maxsum 連續子串行最大和問題的平方求解演算法 param a 整數序列組成的陣列 return 最大子串行之和的值 public static int maxsubsequ...