#include #includeusing
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 ...