獲得最大和的子串行

2021-06-07 18:30:51 字數 634 閱讀 1861

如果子串行都是正數,那麼該子串行一定是最大和得子串行的一部分。如果下乙個數為負數,那麼需要判斷該負數和當前子串行的和是否未正。如果是負數,那麼我們可以認為包含這個負數的子串行一定不是最大子串行。但是如果為正數,我們還需要繼續判斷後續節點是否可以使得最大和增加。例如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...