題目:給出陣列,求子序列的最大和。
分別用一下兩種方法解決。
#include
// 方法1: 分治法
//時間複雜度 o(nlogn)
int max3(int num1 , int num2 , int num3)
int maxsubsum(int
array,int start, int end)
middle = (start+ end)/2;
//遞迴求解左半部分最大子串行和
maxleftsum = maxsubsum(array, start, middle);
//遞迴求解右半部分最大子串行和
maxrightsum = maxsubsum(array, middle+1, end);
//求解中間部分的最大子串行和
leftbordersum=0,maxleftbordersum=0;
for(i = middle;i>=start;i--)
rightbordersum =0,maxrightbordersum=0;
for (i=middle+1; i<=end; i++)
}return max3(maxleftsum, maxrightsum, maxleftbordersum+maxrightbordersum);
}//方法2 時間複雜度 o(n)
int getmaxsubsum(int
array,int start,int end)
}return maxsum;
}int main(int argc, const
char * argv) ;
//int max = maxsubsum(a, 0, 7);
int max = getmaxsubsum(a, 0, 7);
printf("%d",max);
return
0;}
求陣列的最大子陣列和最大子陣列的和
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為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 ...
陣列最大子串行和問題
問題描述 最大子串行 給定一整數序列a1,a2,an 可能有負數 求a1 an的乙個子串行ai aj,使得ai到aj的和最大。例如 整數序列 2,11,4,13,5,2,5,3,12,9的最大子串行的和為 子串行起始下標為 結束下標為 複雜度 o n return 子串行最大和,start 為子串行...