求陣列的最大子陣列值和最長公共子串行問題

2021-09-20 13:59:42 字數 1036 閱讀 6276

#include #include 

using

namespace

std;

/*求陣列的子陣列和的最大值

分析:子陣列是連續的,只用返回子陣列的和,元素肯定是整數,包括正數,負數,0

假設 sum儲存的是陣列從0第i個位置的最大子陣列之和,那麼第i+1個元素加入

後的結果 temp = max(temp+a[i+1],a[i+1]); sum = max(sum,temp);(sum中始終存著最大和)

*/int max(int a,int

b)int maxsum(int *arr,int

n)

return

sum;}//

最長遞增、遞減子串行,這裡以遞增子串行為例,遞減子串行可以轉化為遞增子串行計算

/*設以 len陣列儲存 以每乙個元素結尾的遞增子串行的最大長度,沒增加乙個元素,更新len[0---i]

len[i] = max a[i]>a[k] k:[0 i-1];

該方法的效率為o(n^2)

*/int lis(int *arr,int

n) }

int max=len[0

];

for (int i = 0; i < n; i++)

if(len[i]>max)max =len[i];

free(len);

return

max;

}int main(int argc, char **ar**)

;

intsize;

inti;

size = sizeof(a)/sizeof(int

);

int res =maxsum(a,size);

printf(

"最大子陣列之和為:%d\n

",res);

printf(

"最長遞增子串行:%d\n

",lis(a,size));

return0;

}

求陣列的最大子陣列和最大子陣列的和

輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。include using n...

求陣列中最大子陣列的和

本篇部落格介紹第二週課上小測 求陣列中最大子陣列的和,使用c 實現。1 include2 using namespace std 3int main 419 int ans 100000 20 再次遍歷,最大值即為最大子陣列的和 21for i 1 i n i 22 ans max ans,a i ...

求陣列最大子串行的和

題目 給出陣列,求子序列的最大和。分別用一下兩種方法解決。include 方法1 分治法 時間複雜度 o nlogn int max3 int num1 int num2 int num3 int maxsubsum int array,int start,int end middle start ...